繁体   English   中英

在JAVA中如何连接并等待端口完成TIME_WAIT

[英]In JAVA how to connection and wait for port to finish TIME_WAIT

我在代码中有一部分检查端口可用性(打开连接并立即关闭它):

try{
   new ServerSocket(currentConnector.getPort()).close();
 }

这里的问题是端口进入的TIME_WAIT状态因系统而异。 我想确保在close()该端口可用。

我能想到的一种方法是增加60-90秒的睡眠时间。 但这似乎并不优雅。

我可以使用Java(不带bash / batch)验证端口是从TIME_WAIT释放的吗?

谢谢!

  1. 仅当有人连接到端口时,该端口才进入TIME-WAIT。

  2. 您可以通过以下方法克服BindException

     ServerSocket ss = new ServerSocket(); ss.setReuseAddress(true); ss.bind(new InetSocketAddress(port)); 
  3. 但是我对目标提出了质疑。 如果要监听端口,请监听该端口,然后捕获异常。 如果要查看是否可以连接到它,请连接到它,并在出现异常时进行处理。 最终预测未来的技术只是算命。 不完善的技术。 检测任何资源是否可用的正确方法只是尝试以常规方式使用它。 其他任何事情都有可能导致误报,误报和时序窗口问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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