[英]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释放的吗?
谢谢!
仅当有人连接到端口时,该端口才进入TIME-WAIT。
您可以通过以下方法克服BindException
:
ServerSocket ss = new ServerSocket(); ss.setReuseAddress(true); ss.bind(new InetSocketAddress(port));
但是我对目标提出了质疑。 如果要监听端口,请监听该端口,然后捕获异常。 如果要查看是否可以连接到它,请连接到它,并在出现异常时进行处理。 最终预测未来的技术只是算命。 不完善的技术。 检测任何资源是否可用的正确方法只是尝试以常规方式使用它。 其他任何事情都有可能导致误报,误报和时序窗口问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.