2013-03-08 94 views
9

当async_read_some()返回EOF的异常时,是否意味着服务器停止发送数据,还是表示连接已关闭。我有这个困惑,因为我无法找到一种方法来知道客户端是否已收到来自服务器的所有数据。boost :: asio中的async_read()中的EOF

回答

10

它表示连接已关闭。虽然记录elswhere它仍然是适用的:

boost::asio::error::eof错误代码指示连接被对方​​关闭。

如果客户端需要知道从服务器接收到的所有数据,则考虑在通信协议中支持成帧。 Boost.Asio提供更高级别的操作以帮助简化操作。例如,async_read_until()可以用于某些字符集用于指示消息结束的协议,并且可以将其用于固定长度协议或具有固定长度报头的可变长度协议。

相关问题