13

async_read_some() が EOF の例外を返した場合、サーバーがデータの送信を停止したことを意味しますか、それとも接続が閉じられたことを意味しますか。クライアントがサーバーからすべてのデータを受信したかどうかを知る方法が見つからないため、この混乱が生じています。

4

1 に答える 1

11

接続が閉じたことを示します。他の場所で文書化されていますが、それでも適用可能です。

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

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

于 2013-03-08T16:22:01.133 に答える