Java如何查看服务器端口是否被占用

在Java中,我们可以使用java.net包中的ServerSocket类来检查服务器端口是否被占用。ServerSocket类提供了一种简单的方法来监听和接受客户端连接请求。如果指定的端口已被其他程序占用,将抛出java.net.BindException异常。

以下是一个示例代码来检查服务器端口是否被占用:

import java.io.IOException;
import java.net.ServerSocket;

public class PortChecker {

    public static boolean isPortAvailable(int port) {
        try (ServerSocket serverSocket = new ServerSocket(port)) {
            // 如果端口可用,创建一个ServerSocket对象不会抛出异常
            return true;
        } catch (IOException e) {
            // 如果端口被占用,创建一个ServerSocket对象会抛出IOException异常
            return false;
        }
    }

    public static void main(String[] args) {
        int port = 8080;
        boolean isAvailable = isPortAvailable(port);
        if (isAvailable) {
            System.out.println("端口 " + port + " 可用");
        } else {
            System.out.println("端口 " + port + " 被占用");
        }
    }
}

在上面的代码中,我们定义了一个PortChecker类,并在其中编写了一个isPortAvailable方法来检查指定端口是否可用。该方法通过尝试创建一个ServerSocket对象来检查端口是否被占用。如果端口可用,将返回true;如果端口被占用,将捕获IOException异常并返回false

main方法中,我们调用isPortAvailable方法来检查端口8080是否可用,并打印相应的消息。

流程图

下面是一个示例流程图来说明上述代码的逻辑:

st=>start: 开始
op=>operation: 定义isPortAvailable方法
cond=>condition: 端口是否可用?
op1=>operation: 尝试创建ServerSocket对象
op2=>operation: 返回true
op3=>operation: 捕获IOException异常
op4=>operation: 返回false
e=>end: 结束

st->op->cond
cond(yes)->op1->op2->e
cond(no)->op3->op4->e

结论

通过使用ServerSocket类的方式,我们可以简单地检查服务器端口是否被占用。以上示例代码提供了一个通用的方法来实现这一目的,并给出了相应的流程图来更好地理解代码的逻辑。您可以根据自己的需求调整代码中的端口号,并根据返回的布尔值来判断端口是否被占用。