2012-03-19 213 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和網絡,把客戶端放在同一個網絡上(即無路由器或智能交換機之間),(不得已)禁用不需要的網絡服務。