Javaでテスト用の空きポートを取得する(TCP)
数行で書けたのでメモ。
(今回の書き方は取得してすぐに解放しているので、実際に取得ポートを取得するまでの僅かな間に、参照できなくなる可能性もあります。)
public static int getFreePort() { return IntStream.range(1025, 65535) .filter(i -> { try (ServerSocket socket = new ServerSocket(i, 1, InetAddress.getByName("localhost"))) { return true; } catch (IOException e) { return false; } }) .findFirst().orElseThrow(IllegalStateException::new); }
UDPは DatagramSocket
を使えばいける模様。