gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:51:47 25 4
gpt4 key购买 nike

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

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

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

我能想到的一种方法是增加 60-90 秒的 sleep 时间。但它似乎不是很优雅。

我可以使用 Java(不使用 bash/批处理)验证端口是否已从 TIME_WAIT 释放?

谢谢!

最佳答案

  1. 端口只有在有人连接时才会进入TIME-WAIT。

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

    ServerSocket ss = new ServerSocket();
    ss.setReuseAddress(true);
    ss.bind(new InetSocketAddress(port));
  3. 但是我质疑这个目标。如果你想在端口上监听,那就监听它,然后捕获异常。如果您想查看是否可以连接到它,请连接到它并在出现异常时进行处理。试图预测 future 的技术最终只是算命。技术不行。检测任何资源是否可用的正确方法只是尝试以正常方式使用它。其他任何事情都可能导致误报、误报和时间窗口问题。

关于java - 在 JAVA 中如何连接并等待端口完成 TIME_WAIT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29047418/

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