我对套接字有疑问。我正在我的电脑和手机之间创建一个套接字来发送消息。当我关闭服务器或客户端时,它会发送一个 FIN 数据包并保持 FIN_WAIT2 状态一分钟。但是,对方卡在了CLOSE_WAIT状态,显然无法关闭socket。我认为套接字应该立即关闭,所以也许我应该以某种方式在客户端中实现一个代码,当服务器想要关闭它时关闭它,反之亦然。我怎样才能做到这一点?
您需要关闭套接字通道的两端。
如果服务器关闭与客户端的连接,客户端需要关闭客户端上的连接,以便FIN
传输最后一个数据包(从客户端到服务器)。这将触发TCP 状态机中的最后一个状态转换。
CLOSE_WAIT 表示对端已发送 FIN 并且 TCP 正在等待本地应用程序关闭套接字。请参阅 RFC 793。它不会自动发生。