Ich verstehe, dass der folgende Code (vielleicht nicht sehr effizient) mit einem freien TCP-Port in Java herauszufinden:Die Suche nach zwei freien TCP-Ports
public static int findFreePort() {
int port;
try {
ServerSocket socket= new ServerSocket(0);
port = socket.getLocalPort();
socket.close();
} catch (Exception e) { port = -1; }
return port;
}
(Es gibt einige Fragen hier in SO - forexample) .
Was ich nicht verstehe ist, warum (oder ob) zwei aufeinanderfolgende Aufrufe dieser Methode garantiert zwei verschiedene Ports zurückgeben. Dies wird beispielsweise angenommen here (Suche nach den Aufrufen nach findFreePort
Methode).
Ist das korrekt?
Wenn es verwandte Fragen gibt, sollten Sie diese zitieren und mit ihnen verlinken. – Freiheit
@Freiheit: Fertig – leonbloy
Es ist nicht neu zugeordnet wegen SO_WAIT, einem Mechanismus, der entwickelt wurde, um zu umgehen, dass ein noch im Transit befindliches Paket von einem anderen Prozess empfangen würde.Wenn Sie standardmäßig einen TCP-Port schließen, wird er für die nächsten 2 Minuten nicht neu zugewiesen, damit diese verpufften Pakete geleert werden können. –