【发布时间】:2013-02-24 04:11:53
【问题描述】:
当 async_read_some() 返回 EOF 异常时,是表示服务器停止发送数据还是表示连接已关闭。我有这种困惑,因为我找不到一种方法来知道客户端是否已从服务器接收到所有数据。
【问题讨论】:
标签: c++ boost-asio tcpclient
当 async_read_some() 返回 EOF 异常时,是表示服务器停止发送数据还是表示连接已关闭。我有这种困惑,因为我找不到一种方法来知道客户端是否已从服务器接收到所有数据。
【问题讨论】:
标签: c++ boost-asio tcpclient
表示连接已关闭。尽管记录在 elswhere 它仍然适用:
boost::asio::error::eof的错误代码表示连接已被对等方关闭。
如果客户端需要知道已经从服务器接收到所有数据,那么考虑在通信协议中支持成帧。 Boost.Asio 提供了更高级别的操作来帮助简化此操作。例如,async_read_until() 可用于使用特定字符集指示消息结束的协议,async_read() 可用于固定长度协议或具有固定长度标头的可变长度协议。
【讨论】: