[英]tcp connection in TIME_WAIT won't allow reconnect, java
与服务器建立TCP连接后,我关闭了Linux应用程序,并调用了Socket.close()。
检查netstat -pant,我看到连接处于TIME_WAIT状态。
因为使用相同的端口进行连接,所以这阻止了我立即建立与服务器的连接。 相反,我必须等待连接超时到TIME_WAIT状态,然后才能再次重新连接。
我玩过-没有运气-使用套接字方法:set_so_timeout(),set_keepalive(),set_so_linger()和set_reuseaddr()-该方法的确切拼写在本文中可能不正确。
我的问题是如何使连接脱离TIME_WAIT状态,以便立即重新建立连接?
请告诉我。
谢谢jbu
使连接脱离TIME_WAIT的最佳方法是(令人惊讶地)等待:-)
这就是TCP / IP的工作方式。 会话由元组(sourceIP, sourcePort, destIP, destPort, protocol)
之所以不能重复使用,是因为网络中某些地方可能仍存在一些数据包。
TIME_WAIT状态通常是最大数据包寿命的两倍,因此您不应该摆弄它,因为这可能会导致数据包从上一个会话中显示(这会破坏当前会话)。
理想情况下,您应该从其他源端口进行连接,然后便可以立即打开会话。
您还需要注意的另一件事是严重关闭的会话。 我一直都遵循客户端应该关闭会话(并干净地关闭它)的准则。 这样可以最大程度地减少长期闲置的半封闭会议的可能性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.