繁体   English   中英

TIME_WAIT中的TCP连接将不允许重新连接,Java

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM