Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我在 JAVA 中有一个项目,在其中我将 tcp 套接字绑定到特定端口。
当我为端口 X 上的套接字绑定调用 close() 方法时,我无法在端口 X 上绑定新套接字几秒钟,尽管我已经调用了 close() 方法。但是几秒钟后就可以绑定了。
发生这种情况正常吗?还是我应该再次检查我的代码?
我在特定端口绑定 tcp 套接字
这就是那里的问题,解决方案是不这样做。让系统选择。
绑定到特定的本地端口不是任何事情的解决方案,至少不是任何理智的事情。有时,过分热情的网络管理员会错误地认为(a)它增加了安全性并且(b)它很容易实现,从而指定出站端口范围。两者都不正确。
TIME_WAIT 状态不是“操作系统 [需要] 一段时间才能收到通知”,它是 TCP 的一项基本安全功能。关闭的套接字会持续几分钟。除非您绑定到特定的本地出站端口,否则这是一项功能,而不是错误。