boost::asio中的async_read()函数出现EOF。

13

当async_read_some()返回EOF异常时,它是指服务端停止发送数据还是连接关闭。我有这个疑惑,因为我找不到一种方法来知道客户端是否已经接收到了服务端的所有数据。

1个回答

11

它表示连接已关闭。虽然在其他地方有记录,但仍然适用:

boost::asio::error::eof的错误代码表示连接是由对等方关闭的。

如果客户端需要知道是否已经从服务器接收到所有数据,则可以考虑在通信协议中支持封装。Boost.Asio提供了更高级别的操作来帮助实现这一点。例如,async_read_until()可以用于指示消息结尾的某些字符的协议,并且async_read()可用于具有固定长度标头的固定长度协议或可变长度协议。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接