TCP套接字关闭和重新绑定

时间:2012-05-25 01:07:58

标签: java sockets bind

我在JAVA中有一个项目,我在其中绑定特定端口中的tcp套接字。

当我为端口X上的套接字绑定调用close()方法时,我无法在端口X上绑定新套接字几秒钟,尽管我调用了close()方法。但几秒钟后就可以绑定了。

这是正常的吗?或者我应该再次检查我的代码吗?

1 个答案:

答案 0 :(得分:3)

  

我在特定端口绑定tcp套接字

那就是问题所在,解决方案就是不要这样做。让系统选择。

绑定到特定的本地端口不是任何解决方案,至少不是任何理智。偶尔过度热心的网络管理员会误认为出站端口范围是错误的信念或错觉:(a)它增加了安全性;(b)它很容易实现。两者都不正确。

TIME_WAIT状态不是“需要一段时间才能获得通知的OS”,它是TCP的基本安全功能。封闭的插座逗留几分钟。除非您绑定到特定的本地出站端口,否则这是一个功能,而不是错误。