我正在处理 C# 应用程序,处理 TCP 套接字。
我在远程机器上有一个服务器应用程序 ( Hercules ),试图保持套接字打开。
我的机器上有我的应用程序,订阅了那个打开的套接字。
我正在使用Microsoft 的 TCPViewer来跟踪正在发生的事情。
几分钟后,我看到套接字从已建立状态变为时间等待状态,然后套接字连接断开。
我一直在两台计算机的事件查看器中查找所有常规位置(Windows 日志/应用程序、/安全性、/设置、/系统和/转发事件)中的事件 ID 4227,但我一无所获。
我应该怎么做才能知道哪台机器实际上正在关闭 TCP 套接字以及为什么?
为了找出哪一方关闭了连接,您需要进行数据包捕获。请参阅https://wiki.wireshark.org/TCP-4-times-close.md连接关闭在 Wireshark 中的外观。发送初始 FIN 的一方是关闭连接的一方。
仅看流量是不可能说的。连接可能会关闭,因为应用层协议期望或允许它这样做。它可能会因为客户端或服务器崩溃而关闭。它可能由于违反协议而被一方关闭,即如果另一方的行为与预期不同......所以为了找出你需要了解应用程序协议的原因,查看日志文件,检查是否进程正在运行等