根据tcp协议(protocol),当tcp连接终止时,发起方的tcp套接字在连接完全关闭之前会进入以下状态FIN-WAIT-1,FIN-WAIT-2,TIME-WAIT,而其他方的tcp套接字会进入以下状态:FIN-WAIT-1,FIN-WAIT-2,TIME-WAIT end 在连接完全关闭之前进入以下状态 CLOSE-WAIT、LAST-ACK、CLOSED。 在我们的应用程序中,服务器正在启动连接终止,这导致服务器端套接字在 FIN_WAIT2 状态下无限等待,因为客户端建立的连接由于端口不可用而被服务器丢弃。 客户端发起的连接终止是否有利?
最佳答案
从客户端发起终止可能是有利的,因为它可以防止服务器进入 TIME_WAIT。您的问题有所不同。
FIN_WAIT2 中的套接字是“半打开”的:客户端仍然可以发送数据并且您可以读取数据,但无法发回任何数据。套接字将保持此状态,直到客户端关闭其套接字或服务器重置连接。
所以听起来您的客户根本没有关闭其一侧的连接。
关于java - 由服务器发起的 TCP 连接关闭是否有利?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20393271/