Linux 服务器(端口 7000)
Windows 客户端(端口 8585)
场景 1:客户端重启
重启客户端
服务器套接字读取返回 -1,获取 errno 104,对端重置连接
服务器关闭与客户端的套接字连接
客户端在其套接字上调用 close
客户端重新启动并能够立即连接到服务器
场景 2:客户退出
客户端退出
服务器套接字读取返回 0,获取 errno 11,资源暂时不可用
服务器关闭与客户端的套接字连接
客户端在其套接字上调用 close
客户端netstat显示
TCP Client IP:8585 Server:7000 TIME_WAIT InHost
是什么原因导致服务器套接字读取在重新启动时返回 0,而不是返回 errno 104 的 -1?
客户端正在调用 Windows 套接字上的关机/关闭来重新启动/退出。我了解 TCP 的 TIME_WAIT 状态是什么。但我不明白是什么导致了这个 TIME_WAIT。
Wireshark 重启:服务器有 TCP [RST, ACK]
Wireshark 退出:服务器有 TCP [FIN, ACK]
不确定如果我为客户端套接字调用相同的关闭方法,它们为什么会有所不同。