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

时间:2013-03-08 15:03:53

标签: c++ boost-asio tcpclient

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

1 个答案:

答案 0 :(得分:9)

表示连接已关闭。虽然记录了elswhere,但它仍然适用:

  

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

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