1

这个问题与之前的问题Sockets: Discover port availability using Java几乎相似。但是当我检查德比监听端口时,它以某种方式无法正常工作。

public static boolean isPortavailable(int port){
    ServerSocket ss = null;
    DatagramSocket ds = null;
    try{
        ss = new ServerSocket(port);
        ss.setReuseAddress(true);
        ds = new DatagramSocket(port);
        ds.setReuseAddress(true);
        return true;
    }
    catch(IOException e){
    }
    finally{
        if(ss != null){
        try{
            ss.close();
            ds.close();
        }
        catch(IOException e){
            /* should not be thrown */
        }
        }
    }
    return false;
}

这是我的主要方法

public static void main(String[] args){
    System.out.println("Derby:"+isPortAvailable(1527));
    System.out.println("Jetty:"+isPortAvailable(7080));
    System.out.println("Tomcat:"+isPortAvailable(8084));
}

我使用 derby 1527、jetty 7080 和 tomcat 8084 的端口启动服务。当我运行这个 main 方法时,它给出了以下结果

Derby:true
Jetty:false
Tomcat:false

我无法找到为什么它对德比给出错误的答案,任何人都可以帮忙。谢谢

4

0 回答 0