2009-08-04 23 views
8

Was ist der Unterschied zwischen Funktionen Aufruf boost::asio::ip::tcp::socket ‚s read_some/write_some Mitglied und die boost::asio::read/boost::asio::write freien Funktionen aufrufen?boost :: Asio Lese-/Schreiboperationen

Genauer gesagt:

Gibt es einen Nutzen übereinander zu verwenden?

Warum sind beide in der Bibliothek enthalten?

Antwort

13

read_some und write_some können so schnell zurück, wie auch nur ein einziges Byte übertragen wurde. Daher müssen Sie eine Schleife erstellen, wenn Sie sichergehen möchten, dass Sie alle Daten erhalten - aber das könnte das sein, was Sie wollen.

Die freien Funktionen sind Wrapper um read_some und write_some, und haben unterschiedliche Bedingungen Terminierung am Überlast abhängt. Typischerweise sie warten, bis der Puffer voll übertragen werden (oder ein Fehler auftritt, oder in einigen Überlastungen eine explizite Komplettierungsbedingung auftreten)

+0

Aber warum beide enthalten? –

+0

Sie machen verschiedene Dinge (unterschiedliche Abbruchbedingungen). Ich habe meine Antwort ein wenig bearbeitet, hoffentlich ist es jetzt klarer. – bdonlan