2009-08-04 20 views
8

boost::asio::ip::tcp::socketread_some/write_someメンバー関数を呼び出して、boost::asio::read/boost::asio::writeフリー関数を呼び出す方法との違いは何ですか?Boost :: Asio読み込み/書き込み操作

具体的に

は、他の上で1つを使用してのいずれかの利点がありますか?

なぜ両方ともライブラリに含まれていますか?

答えて

13

read_someとwrite_someは、1バイトであってもすぐに返されます。そのため、すべてのデータを確実に取得したい場合はループする必要がありますが、これが必要な場合もあります。

フリー関数は、read_someおよびwrite_someの周りのラッパーであり、オーバーロードによって異なる終了条件があります。通常、バッファが完全に転送されるのを待ちます(エラーが発生するか、一部のオーバーロードで明示的な完了条件が発生する)

+0

なぜ両方を含むのですか? –

+0

彼らは異なったことをします(異なる終了条件)。私は私の答えを少し編集しました、うまくいけば、今はっきりしています。 – bdonlan

関連する問題