在我的测试中,当我的客户端尝试从 boost 套接字读取数据时,偶尔会出现错误
An existing connection was forcibly closed by the remote host
我有几个问题:
1) 我必须检查与此消息相关的 Boost 错误代码是什么?
2) Linux 系统上的类似物是什么?我可以捕获相同的错误代码吗?
3) 在服务器日志中我没有看到成功的连接。但客户端从其连接尝试中成功返回。 boost::asio::write()
也成功,但服务器也没有收到任何内容。但是当尝试从套接字读取(发送后)时,我收到上述错误消息。
这是怎么回事?
最佳答案
回答您的问题:
1) boost
错误代码为 boost::asio::error::connection_reset
;请参阅 boost/system/error_code.hpp
。
2) Linux 系统上的模拟是 ECONNRESET
;请参阅 errno.h。
3) connection_reset
是 TCP 套接字断开连接的多种方式之一,请参阅:How to detect when a boost TCP socket disconnects 。
为了准确确定发生了什么,我同意 @user
并建议您安装和使用 Wireshark观察客户端和服务器之间的 TCP 消息。
关于c++ - Boost.Asio 错误代码为 "An existing connection was forcibly closed by the remote host",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39123589/