Je comprends que le code suivant peut (peut-être pas très efficace) trouver un port TCP libre en Java:Trouver deux ports tcp libres
public static int findFreePort() {
int port;
try {
ServerSocket socket= new ServerSocket(0);
port = socket.getLocalPort();
socket.close();
} catch (Exception e) { port = -1; }
return port;
}
(Il y a ici SO quelques questions connexes - forexample) . Ce que je ne comprends pas, c'est pourquoi (ou si) deux appels successifs à cette méthode sont garantis pour retourner deux ports différents. Ceci est supposé, par exemple, here (recherche des appels à la méthode findFreePort
).
Est-ce correct?
Si vous avez des questions connexes, vous devez les citer et les lier. – Freiheit
@Freiheit: Fait – leonbloy
Il n'est pas réaffecté à cause de SO_WAIT, un mécanisme conçu pour contourner le fait qu'un paquet encore en transit serait reçu par un autre processus.Par défaut, si vous fermez un port TCP, il n'est pas réaffecté pendant les 2 minutes suivantes pour permettre à ces paquets persistants de se vider. –