通过Java代码检测电脑某端口是否被占用,若被占用显示占用程序
时间: 2024-01-20 18:03:55 浏览: 22
您好,我能够帮您回答这个问题。以下是通过Java代码检测电脑某端口是否被占用并显示占用程序的方法:
```java
import java.net.*;
public class CheckPort {
public static void main(String[] args) {
int port = 8080; // 要检测的端口号
try {
ServerSocket serverSocket = new ServerSocket(port);
serverSocket.close();
System.out.println("该端口号未被占用!");
} catch (Exception e) {
System.out.println("该端口号已被占用!");
String command = "lsof -i:" + port; // Mac/Linux系统下获取占用该端口的进程命令
// String command = "netstat -aon|findstr \"" + port + "\""; // Windows系统下获取占用该端口的进程命令
try {
Process process = Runtime.getRuntime().exec(command);
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
```
以上代码通过创建一个ServerSocket来检测指定端口是否被占用,若未被占用则关闭ServerSocket,若被占用则通过执行命令(Mac/Linux系统下为“lsof -i:端口号”,Windows系统下为“netstat -aon|findstr '端口号'”)获取占用该端口的进程信息并输出到控制台。
注意:要想获取占用某个端口的进程信息,需要在Mac/Linux系统下安装lsof命令,并使用管理员权限运行Java程序(否则执行命令时可能无法获取到全部信息);Windows系统下执行命令可能需要使用管理员权限或在命令提示符中切换到系统盘(如C:\)再执行命令。