TCP 连接失败

Posted

技术标签:

【中文标题】TCP 连接失败【英文标题】:TCP Connect Fails 【发布时间】:2012-02-22 23:54:29 【问题描述】:

我有两个通过 TCP 通信的应用程序,它们都在 Windows XP 机器上运行。客户端是一个第三方应用程序,我只有可执行文件,没有源代码。它连接的服务器的 IP 地址在文本配置文件中设置。服务器是我正在编写的应用程序。

所有网络掩码都是 255.255.255.0。

在所有情况下,客户端都在 192.168.142.202 上运行。

我看到这样一种情况,如果我在 192.168.142.207 上运行我的服务器,一切正常,但如果我将我的服务器移动到同一子网 (192.168.142.105) 上的另一台机器上,一切都无法正常工作。具体来说,连接似乎没有正确建立。我查看了 Wireshark 中正在发生的事情,并希望寻求帮助来解释我所看到的内容。

在服务器端,我看到了 3 次握手:SYN、SYN/ACK、ACK。我在 accept() 返回时没有收到错误代码,netstat 显示连接已建立。

在客户端,连接似乎没有正确建立。这会导致客户端定期重新连接,并且它还会偶尔关闭所有因此创建的未正确连接的套接字。当我在 Wireshark 中查看客户端时,我最常看到的是 SYN、SYN、SYN 模式,而不是预期的 3 次握手。有时,确实会出现 3 次握手,但即便如此,客户端似乎对连接并不满意,因为它关闭了它。

我会注意到客户端和服务器之间实际上有两个 TCP 连接。另一个连接(即不是我上面描述的有问题的连接)工作得很好。有问题的连接有监听端口 5004;良好的连接有监听端口 1234。

我已将客户端和服务器 Wireshark 捕获的 .txt 和 .pcap 版本放在此链接:https://skydrive.live.com/redir.aspx?cid=c5beaf58ac752bb0&resid=C5BEAF58AC752BB0!105&parid=root

就物理网络设置而言,在客户端和服务器之间有一个交换机在工作的情况下,在客户端和服务器之间有两个交换机在不工作的情况下。所有 ping 测试均成功。不涉及无线连接;一切都是有线的。

所有防火墙均已关闭。

是否有人对问题是什么或我可以收集哪些进一步的数据来解决问题有任何想法?

【问题讨论】:

【参考方案1】:

好吧,看来这根本不是网络或网络编程问题。我通过反复试验发现,连接到我的第三方软件希望运行它的机器具有比运行我的软件的机器更小的 IP 地址。这对我来说似乎完全是武断的,但从经验上看,情况似乎非常强烈。啊…………

感谢所有可能花时间仔细研究我提供的 Wiresharks 转储的人...

【讨论】:

以上是关于TCP 连接失败的主要内容,如果未能解决你的问题,请参考以下文章

tcp连接成功,socket创建失败

TCP 连接失败

java连接mysql报tcp/ip连接失败是啥原因?

Google应用引擎TCP连接失败

与主机 localhost、端口 1433 的 TCP/IP 连接失败

JDBC 通过端口 1433 连接到主机 localshost 的 TCP/IP 连接失败。错误:“null。