我明白,下面的代碼可以(也許不是很有效)找出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