【问题标题】:Get dynamically assigned server port?获取动态分配的服务器端口?
【发布时间】:2021-05-27 16:49:33
【问题描述】:

当我打电话时

import org.apache.http.impl.nio.bootstrap.*;
import java.net.InetSocketAddress;

HttpServer server = ServerBootstrap.bootstrap()
  .setListenerPort(0)
  // ...
  .create();
server.start();

如何获得分配给服务器的实际端口号?

我试过了

int port = ((InetSocketAddress) server.getEndpoint().getAddress()).getPort();

但这只是返回0

【问题讨论】:

    标签: apache-httpcomponents


    【解决方案1】:

    HttpComponents 隐藏了很多内部结构,尤其是您正在寻找的东西,解决方法是检索库外部的端口并使用它:

    int port;
    try (ServerSocket socket = new ServerSocket()) {
        socket.setReuseAddress(false);
        socket.bind(new InetSocketAddress(0));
        port = socket.getLocalPort();
    }
            
    HttpServer server = ServerBootstrap.bootstrap()
      .setListenerPort(port)
      // ...
      .create();
    
    server.start();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-02
      • 2017-02-26
      • 2014-05-28
      • 1970-01-01
      • 2018-05-25
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多