我明白,下面的代码可以(也许不是很有效)找出Java的免费的TCP端口:找到两个免费的TCP端口
public static int findFreePort() {
int port;
try {
ServerSocket socket= new ServerSocket(0);
port = socket.getLocalPort();
socket.close();
} catch (Exception e) { port = -1; }
return port;
}
(这里有一些相关的问题,在SO - forexample) 。
我不明白的是为什么(或者是否)对这个方法的两次连续调用都保证返回两个不同的端口。假定这是例如here(搜索findFreePort
方法的呼叫)。
这是正确的吗?对于ServerSocket的
如果有相关的问题,你应该引用它们并链接到它们。 – Freiheit 2010-07-16 14:25:53
@Freiheit:完成 – leonbloy 2010-07-16 14:29:59
由于SO_WAIT,这个机制没有被重新分配,这个机制旨在规避一个仍然在传输中的数据包将被另一个进程接收。默认情况下,关闭TCP端口后,在接下来的2分钟内不会重新分配以允许这些延迟的数据包刷新。 – 2014-09-16 14:53:50