c++ - Boost.Asio 错误代码为 "An existing connection was forcibly closed by the remote host"

标签 c++ boost-asio

在我的测试中,当我的客户端尝试从 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/

相关文章:

c++ - 如何使用Protobuf的反射来修改Map

c++ - 静态断言基指针 "equals"是派生指针

c++ - 比较两个constexpr指针不是constexpr吗?

c++ - 如何从 g++ COLLECT_LTO_WRAPPER 获取信息到 make 生成的 .so 文件中?

c++ - boost::asio async_read_some async_read_until 编译器警告

c++ - 需要有关 OOP 设计的帮助,以便在类之间共享变量,这些变量独立地使用计时器运行

c++ - 正确使用嵌套循环和 fin

c++ - Boost ASIO 异步接受器不打开监听端口

c++ - Boost 与 asio::placeholders::error 绑定(bind)

c++ - 向套接字发送数据导致异常