【问题标题】: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();