Ich versuche, JPEG-Frames über einen Socket an einen Client mit async_write()
zu schreiben. Ich habe den Boost asynchronen TCP-Tagesserver als Beispiel verwendet ein Startpunkt.
Ich habe die Methode geändert, die async_write()
wie folgt ausführt:
Beim Lesen einer großen Datei vom Server mit einem Client schreibt der Server nur maximal 65536 Bytes. Wenn ich den Aufruf boost::asio::async_write()
durch einen synchronen Aufruf boost::asio::write()
ersetze, wird die korrekte Anzahl Bytes an den Client übertragen.
Ich nehme an, meine Frage ist, wie kann ich mehr als 65536 Bytes mit boost::asio::async_write()
senden? Jede Hilfe würde sehr geschätzt werden.
Ein Problem ist, dass die Verwendung der async_write
-Funktionsdaten nicht sofort von der Funktion gesendet wird, sondern einige Zeit nachdem die start
-Methode beendet ist und die lokale message_
-Variable zerstört wird und% boost::asio::buffer
kopiere den Inhalt von message_
nicht. Es speichert nur einen Verweis darauf. Das Ergebnis ist unvorhersehbar. Möglicherweise ist die Übertragung von 65536 Bytes das Ergebnis dieses Verhaltens.
Tags und Links boost boost-asio