2012-03-19 153 views
0

我有一个C++应用程序,它接受TCP连接,然后读取发送给它的流量。它一直很好,直到我把它移到一台新机器上。好像winsock从不接受入站TCP连接。在我的代码中,它永远不会从select语句返回。我可以看到使用netstat/tcpview,应用程序正在监听端口14005.TCP三次握手失败

如果我只是在本地telnet,我可以连接到此端口。但是,当有人试图通过外部IP地址连接时,TCP 3方式握手永远不会结束。我可以在wireshark中看到入站SYN数据包。它将到达正确的端口14005.然而,我的系统从不再发送SYN-ACK。这只是winsock想要处理的东西吗?该机器有多个NIC卡,但我与INADDR_ANY绑定,所以这应该不重要。有什么方法可以深入挖掘为什么这种握手永远不会发生?

+1

你检查过防火墙设置吗?听起来像Windows防火墙的行动。 – littleadv 2012-03-19 19:31:49

+0

听起来像是防火墙问题。什么是防火墙设置? – 2012-03-19 19:33:22

+0

是的,我确实检查过。 Windows防火墙已关闭,所以我没事。我在机器上看不到任何防火墙软件。可能有东西正在滑落,但我无处不在。 – JonF 2012-03-19 19:34:26

回答

0

每方式深入挖掘:没有什么比的Wireshark/tshark的更多(您已经使用,但如果你想包玩,看Scapy的)

如果减少头痛发生了什么 - 只使用一个NIC和网络,把客户端放在同一个网络上(即无路由器或智能交换机之间),(不得已)禁用不需要的网络服务。