SHIBUYA 3%

(元在宅が)渋谷で働くエンジニアの備忘録的memo & 雑記 - ココロはいつもSHIBUYAに在り

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);
    }

UDPDatagramSocketを使えばいける模様。