java如何获取服务器端口号

java如何获取服务器端口号

作者:Rhett Bai发布时间:2026-02-11阅读时长:0 分钟阅读次数:3

用户关注问题

Q
Java程序中怎么获取当前服务器监听的端口?

我在用Java写服务器应用,想知道代码里怎样获取服务器正在监听的端口号?

A

通过ServerSocket获取端口号的办法

如果你用ServerSocket来启动服务器,可以调用getLocalPort()方法来获得监听的端口号。例如:

ServerSocket serverSocket = new ServerSocket(0); // 端口为0则会自动分配
int port = serverSocket.getLocalPort();
System.out.println("服务器监听端口: " + port);

Q
使用Java Web框架时怎么在代码内获取服务器端口?

我使用的是Spring Boot或类似框架,想在控制器或服务中读取应用监听的端口号,应该怎么做?

A

借助ServletRequest或环境配置获取端口信息

在Java Web应用中,可以通过HttpServletRequest的getServerPort()方法获取当前请求所用的服务器端口,如:

int port = request.getServerPort();

另外,Spring Boot项目中可以通过环境变量spring.application.port或者获取server.port配置来知道应用的端口,如果端口是随机生成的,可以注入或监听应用启动参数来捕获。

Q
Java代码如何检测当前服务器的所有开放端口?

我想写代码检查服务器上哪些端口在监听状态,有什么Java方式可以实现端口扫描?

A

使用Socket尝试连接判断端口开放状态

Java没有直接API列举服务器开放端口,但可以通过尝试连接端口来判断。例如,写一个循环遍历端口范围,用Socket尝试连接某个端口,如果连接成功或没有抛异常,则说明端口开放。示例:

try (Socket socket = new Socket()) {
socket.connect(new InetSocketAddress(host, port), timeout);
// 端口开放
} catch (IOException ex) {
// 端口未开放
}