0

特定のポート範囲に従って空きポートを取得しようとするサーバー コードがあります。

private ServerSocket allocatePort() throws IOException {
    ServerSocket server = null;
    for (int i=0; i<serverPortRange; i++) {
        int port = serverPort.intValue()+i;
        try {
            server = new ServerSocket(port);
            break;
        } catch (IOException e) {
            log.debug(String.format("DCServer could not allocate port %s", port));
        }
    }
    if (server == null) {
        throw new IOException();
    }
    return server;
}

2 つのサーバーが同じマシンでこのコードを実行すると、何らかの理由で同じポートが取得されます。実際に取得できているかnetstatで確認したところ、占有ポート一覧に表示されません。

何か案は?

ありがとう、オフィル

4

1 に答える 1

0

ドキュメントに記載されているように、これはJavaが行うことができます:

指定されたポートにバインドされたサーバー ソケットを作成します。ポート 0 は、空きポートにソケットを作成します。

于 2013-01-28T08:04:46.543 に答える