在与服务器建立tcp连接后,我关闭了我的应用程序并调用了Socket.close()。TIME_WAIT中的tcp连接将不允许重新连接,java
检查netstat -pant,我看到连接处于TIME_WAIT状态。
这可以防止我立即连接回服务器,因为我使用相同的端口进行连接。相反,我必须等待连接到TIME_WAIT状态超时才能重新连接。我使用了套接字方法:set_so_timeout(),set_keepalive(),set_so_linger()和set_reuseaddr() - 在这篇文章中,方法的精确拼写可能并不正确。
我的问题是如何从TIME_WAIT状态中获取连接,以便我可以立即重新建立连接?
请让我知道。
感谢, JBU
是的,不同的端口解决了这个问题,我现在就会使用它。 但是,如果我想使用相同的源端口,so_linger方法描述看起来像是要工作。我只是不确定它为什么没有。 – jbu 2009-09-29 02:03:10
SO_LINGER绝对不推荐。充其量,支持在非BSD平台上是零星的。 – paxdiablo 2009-09-29 02:08:32
我不认为使用另一个连接字符串是一个很好的解决方案,应该有一些方法来强制TCP/IP刷新套接字中的所有内容并关闭连接。 – 2010-09-01 09:07:10