2017-06-12 16 views
-2

我有一个C++服务器和客户端。服务器和套接字均报告ECONNRESET。这是怎么回事?

我正在使用poll()系统调用来监视服务器上的套接字以进行读取,写入和错误。

对于某些连接,我发现poll()在发送一堆数据并在中途失败后检测到一个ECONNRESET。在客户端,我也看到一个ECONNRESET被报告。

所以基本上双方都报告说远程端关闭了连接。

这是怎么发生的? 如何调试?是否有任何我可以启用的tcp层日志记录?

+2

你有权访问Wireshark来记录数据包跟踪并查看网络上发生了什么? – user4581301

+1

可能有很多原因可能会发生,我建议使用wireshark,如上面评论中所述。 –

+0

请发贴[mcve]。 –

回答

1

是否有任何可以启用的tcp层日志记录?

使您能够看到低级别IP传输通道发生了什么的最常用工具是Wireshark

您可以使用该工具详细检查通过您的NIC发送和接收的任何数据包。

另一个是针对linux系统的tcpdump

+0

不幸的是,这是在一个有很多服务器的测试环境中。我无法控制机器。 即使我确实如何在发生此问题时准确捕获数据包。 – siri

+0

@siri您只需要控制客户端计算机以观察流量。 –

+0

我有很多流量通过该机器。这个问题有时只会发生。即使在完整传输后的成功案例中,也有很多连接和所有连接都检测到套接字错误104。只有在某些情况下,我可以看到在传输过程中双方都重置了连接。我如何使用tcpdump来捕获这种情况? – siri