当 async_read_some() 返回 EOF 异常时,是服务器停止发送数据还是连接已关闭。我有这种困惑,因为我找不到一种方法来知道客户端是否已从服务器接收到所有数据。
最佳答案
表示连接已经关闭。虽然记录了elswhere它仍然适用:
An error code of
boost::asio::error::eof
indicates that the connection was closed by the peer.
如果客户端需要知道已经从服务器接收到所有数据,那么可以考虑在通信协议(protocol)中支持分帧。 Boost.Asio 提供更高级别的操作来帮助简化此过程。例如async_read_until()可用于使用特定字符集指示消息结束的协议(protocol),以及 async_read()可用于固定长度协议(protocol)或具有固定长度 header 的可变长度协议(protocol)。
关于c++ - boost::asio 中 async_read() 中的 EOF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15297001/