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 回答