Ich habe vor kurzem beschlossen, boost::asio
für meine Sockets zu verwenden, aber jetzt stoße ich auf ein Problem: Dokumentation scheint zu fehlen.
Was ich tun möchte, ist eine Funktion schreiben, die eine Nachricht mit folgender Struktur senden wird:
uint16_t
) für einen Opcode alle Bytes void*
umgewandelt). Diese Daten werden basierend auf dem Opcode Wenn der Opcode beispielsweise 1 ist und möglicherweise als OPCODE_LOGIN definiert ist, könnten die dem Opcode folgenden Bytes eine Zeichenfolge enthalten, die Anmeldeinformationen usw. enthält.
%Vor%}
Dies wird jedoch nicht kompiliert. Ich bekomme einen kryptischen Kompilierungsfehler bezüglich des Aufrufs zum Schreiben:
%Vor% Wie Sie sehen können, verweist die Fehlermeldung direkt auf Boosts write.hpp
-Datei und nicht auf meinen eigenen Code. Ich glaube, ich rufe write()
in irgendeiner Weise falsch an, aber nach einer vollen Stunde googeln und recherchieren Referenzen und Beispiele (die alle entweder eine andere überladene write()
verwenden oder Daten mit speziell definierten Größen / Strukturen verwenden), konnte ich nicht feststellen, was genau ich hier falsch mache.
Kann mir jemand helfen, diesen Kompilierungsfehler zu debuggen?
Dokumentation scheint zu fehlen
Die am höchsten gewählte Frage in boost-asio geht um Dokumentation, fang dort an: -)
Kann mir jemand helfen, diesen Kompilierungsfehler zu debuggen?
Die Funktion write()
free erwartet ein Referenztyp als erster Parameter Kein Zeiger wie in Ihrem Beispiel
An diesem Punkt ist es sicher, fullData zu löschen, um Speicherlecks zu vermeiden?
Ja, write() is
ein blockierender Anruf. Es wird mit Ihrem Puffer ausgeführt, wenn der Anruf zurückkehrt. Ich schlage vor, diese Codeausnahme sicher zu machen, aber schauen Sie sich new
und boost::scoped_array
an, wenn Sie Ihren Puffer mit dynamischer Speicherdauer erstellen wollen.
Tags und Links c++ boost-asio