这个问题与之前的问题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
我无法找到为什么它对德比给出错误的答案,任何人都可以帮忙。谢谢