boost :: asio中的async_read()中的EOF

Jis*_*air 12 c++ tcpclient boost-asio

当async_read_some()返回EOF异常时,它意味着服务器停止发送数据,或者是否意味着连接已关闭.我有这种困惑,因为我无法找到一种方法来了解客户端是否已从服务器接收到所有数据.

Tan*_*ury 10

它表示连接已关闭.虽然有文件证明它仍然适用:

错误代码boost::asio::error::eof表示对等方已关闭连接.

如果客户端需要知道已从服务器接收到所有数据,则考虑支持通信协议中的成帧.Boost.Asio提供更高级别的操作,以帮助简化这一过程.例如async_read_until()可以在其中一组特定的字符被用来表示一个消息的结束的协议被使用,并且async_read()可以被用于任一固定长度的协议或具有固定长度首标的长度可变的协议.