Kann boost::asio nur empfangen full-UDP-Datagramme?

Arbeite ich an einem UDP-server gebaut mit boost::asio und ich begann von tutorial anpassen an meine Bedürfnisse. Wenn ich Anrufe socket.receive_from(boost::asio::buffer(buf), remote, 0, error); es füllt mein Puffer mit Daten aus dem Paket, aber wenn mein Verständnis richtig ist, es löscht alle Daten, die passt nicht in den Puffer. Nachfolgende Aufrufe receive_from erhalten die nächsten datagram verfügbar sind, so sieht es für mich so, es gibt einige Verlust von Daten sogar ohne Vorherige Ankündigung. Bin ich Verständnis dies der falsche Weg?

Habe ich versucht zu Lesen und immer die boost::asio-Dokumentation, aber ich schaffte es nicht, Hinweise zu finden, wie ich bin, dies zu tun der richtige Weg. Was ich tun möchte, ist das Lesen einer bestimmten Menge von Daten, so dass ich es verarbeiten; wenn das Lesen einer gesamten Datagramm ist der einzige Weg, ich kann das schaffen, aber wie kann ich sicher sein, dass Sie nicht verlieren die Daten, die ich erhalte? Welche Puffergröße sollte ich verwenden, um sicher zu sein? Gibt es eine Möglichkeit zu sagen, dass mein Puffer ist zu klein und ich bin Informationen zu verlieren?

Ich davon ausgehen, dass ich möglicherweise erhielt große Datagramme durch das design.

InformationsquelleAutor Kjir | 2010-03-23
Schreibe einen Kommentar