我有一个C ++应用程序,它接受TCP连接,然后读取发送给它的流量。它一直很好用,直到我把它移到一台新机器上。似乎winsock从不接受入站tcp连接。在我的代码中,它永远不会从select语句返回。我可以看到使用netstat / tcpview应用程序正在侦听端口14005.
如果我只是在本地telnet,我可以连接到这个端口。但是,当有人尝试通过外部IP地址连接时,TCP 3方式握手永远不会完成。我可以在wireshark中看到入站SYN数据包。它将转到正确的端口,14005。但是我的系统从不发回SYN-ACK。这只是winsock想要处理的东西吗?该机器有多个NIC卡,但我与INADDR_ANY绑定所以这应该没关系。有什么方法可以深入挖掘,看看为什么这次握手永远不会发生?
答案 0 :(得分:0)
每种方式深入挖掘:仅仅是wireshark / tshark(你已经使用过,但是如果你想玩数据包,看看scapy)
如果减少头痛会发生什么 - 只使用一个网络和网络,将客户端放在同一个网络上(即之间没有路由器或智能交换机),(最后的手段)禁用不需要的网络服务。