gpt4 book ai didi

java - TIME_WAIT 中的 tcp 连接不允许重新连接,java

转载 作者:可可西里 更新时间:2023-11-01 02:56:33 26 4
gpt4 key购买 nike

在与服务器建立 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 的工作原理。 session 由元组 (sourceIP, sourcePort, destIP, destPort, protocol) 标识,您不能重新使用它的原因是网络中可能还有它的数据包某处。

TIME_WAIT 状态通常是最大数据包生命周期的两倍,您不应该摆弄它,因为这可能会导致数据包从前一个 session 中出现(这会搞砸您当前的 session )。

理想情况下,您应该从不同的源端口连接,然后您将能够立即打开 session 。

您应该注意的另一件事是严重关闭的 session 。我一直赞成客户端应该关闭 session (并干净地关闭它)的指南。这最大限度地减少了长时间存在的半关闭 session 的可能性。

关于java - TIME_WAIT 中的 tcp 连接不允许重新连接,java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1490196/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com