2013-03-08 10 views
9

async_read_some()がEOFの例外を返した場合、サーバーがデータの送信を停止したか、接続が終了したことを意味しますか?私はクライアントがサーバーからすべてのデータを受信したかどうかを知る方法を見つけることができないので、この混乱を抱えています。boost :: asioのasync_read()のEOF

答えて

10

接続が閉じていることを示します。 elswhereを記録しているが、それはまだ適用可能である。

boost::asio::error::eofのエラーコードは、接続がピアによって閉じられたことを示しています。

クライアントがサーバーからすべてのデータを受信したことを知る必要がある場合は、通信プロトコルでフレーミングをサポートすることを検討してください。 Boost.Asioはこれをより簡単にするためのより高いレベルの操作を提供します。たとえば、async_read_until()は、メッセージの終わりを示すために特定の文字セットが使用されるプロトコルで使用でき、固定長プロトコルまたは固定長ヘッダーを持つ可変長プロトコルにはasync_read()を使用できます。

関連する問題