Java - 检查TCP端口可用性

时间:2016-10-31 08:13:05

标签: java eclipse tcp eclipse-plugin serversocket

我正在检查TCP端口的可用性,如下所示:

public static boolean isTCPPortAvailable(int hostPort) {
    ServerSocket tempSocket = null;
    try {
        tempSocket = new ServerSocket();
        // Enable Reuse before binding
        tempSocket.setReuseAddress(true);
        tempSocket.bind(new InetSocketAddress(hostPort));
        return true;
    }
    catch (IOException ex) {
        // Denotes that port is in use
    }
    finally {
        if(tempSocket != null) {
            try {
                tempSocket.close();
            }
            catch (IOException e) {
                // Not to be thrown
            }
        }
    }
    return false;
}

问题是即使端口处于LISTENING状态,此方法也会返回true。任何人都可以帮我找到问题。

注意:我使用setReuseAddress(true)忽略TIME_WAIT州。

注意:我在Windows上。

1 个答案:

答案 0 :(得分:0)

你不需要这些。只需使用端口零。系统将为您提供下一个可用端口。

注意IOException '表示该端口正在使用'。只有一些 BindExceptions才能做到这一点。