c++ - boost::asio 中 async_read() 中的 EOF

标签 c++ boost-asio tcpclient

当 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/

相关文章:

c++ - 在没有库的情况下生成声音?

c++ - 在这个 boost::asio 应用程序示例中,如何使用 send_break 进行重置?

c++ - boost::asio::async_read_until 读取所有数据,而不仅仅是一些

cocoa NSStream TCP 连接到 FTP

c# - 使用 NetworkStream 传输文件然后重建文件失败

c++ - qt 和 libbluedevil : No Such slot

c++ - 将 std::shared_ptr 用于 std::vector 时发生内存泄漏

c++ - 堆对象内的局部数组 - C++

c++ - Boost.ASIO 性能不佳

c# - 如何从.Net中的远程设备接收TCP IP消息