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

当两台服务器在同一台机器上运行此代码时,它们会以某种方式获得相同的端口。我用netstat检查了它是否真的获得了,我在占用端口列表中没有看到它。

有任何想法吗?

谢谢, 奥菲尔

4

1 回答 1

0

正如文档所述,Java 可以为您做这件事:

创建一个绑定到指定端口的服务器套接字。端口 0 在任何空闲端口上创建一个套接字。

于 2013-01-28T08:04:46.543 回答