我尝试使用以下方法检查端口 80 是否可用:
我有一个 Java 应用程序,它检查端口 80 是否可用,如果是,它运行一个小型 Web 服务器侦听端口 80。它可以很好地检测另一个 Java 应用程序是否在端口 80 上侦听,例如,如果我运行我的应用程序两次,第二个实例将正确地告诉我正在使用端口 80。
问题是我正在运行 WAMP 并在端口 80 上侦听,如果我在启动 WAMP 后运行 Java 应用程序,它不会告诉我端口 80 忙。似乎它只告诉我另一个 Java 应用程序是否使用端口 80。
这超出了我的理解......非常感谢任何帮助!
代码片段:
int port = 80;
if(!Connection.isPortAvailable(port)) {
logger.info("Port " + port + " is already in use");
}
// in Connection class
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 (ds != null) {
ds.close();
}
if (ss != null) {
try {
ss.close();
} catch (IOException e) {
/* should not be thrown */
}
}
}
return false;
}