java中有没有端口类_如何在Java中查找可用端口? - Baeldung

在本快速教程中,我们将研究如何检查特定的端口状态以及如何使用自动分配的端口状态。我们将研究如何使用普通的Java和Spring框架完成此操作。我们还将研究其他一些服务器实现,例如嵌入式Tomcat和Jetty。

纯Java

try (ServerSocket serverSocket = new ServerSocket(0)) {

assertThat(serverSocket).isNotNull();

assertThat(serverSocket.getLocalPort()).isGreaterThan(0);

} catch (IOException e) {

fail("Port is not available");

}

Spring

Spring框架包含一个SocketUtils类,我们可以使用它来找到可用的空闲端口。它的内部实现使用ServerSocket类,如前面的示例所示:

int port = SocketUtils.findAvailableTcpPort();

try (ServerSocket serverSocket = new ServerSocket(port)) {

assertThat(serverSocket).isNotNull();

assertThat(serverSocket.getLocalPort()).isEqualTo(port);

} catch (IOException e) {

fail("Port is not available");

}

Jetty

Server jettyServer = new Server();

ServerConnector serverConnector = new ServerConnector(jettyServer);

jettyServer.addConnector(serverConnector);

try {

jettyServer.start();

assertThat(serverConnector.getLocalPort()).isGreaterThan(0);

} catch (Exception e) {

fail("Failed to start Jetty server");

} finally {

jettyServer.stop();

jettyServer.destroy();

}

Tomcat

Tomcat是另一种流行的Java嵌入式服务器,其工作方式略有不同。我们可以通过Tomcat类的setPort方法指定一个显式端口号。如果我们提供的端口号为零,则Tomcat将自动分配一个空闲端口。但是,如果我们未设置任何端口号,则Tomcat将使用其默认端口8080。请注意,默认Tomcat端口可能被其他应用程序占用:

Tomcat tomcatServer = new Tomcat();

tomcatServer.setPort(0);

try {

tomcatServer.start();

assertThat(tomcatServer.getConnector().getLocalPort()).isGreaterThan(0);

} catch (LifecycleException e) {

fail("Failed to start Tomcat server");

} finally {

tomcatServer.stop();

tomcatServer.destroy();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值