Java NIO套接字,可以在任何可用的端口连接吗?

PHc*_*Der 3 java sockets nonblocking

链接提供了打开非阻塞套接字的教程.但是,此处提供的方法不提供拾取任何随机端口的选项.此java文档页面中显示的所有构造函数都将地址作为参数.有什么办法吗?

小智 8

如果你看一下InetSocketAddress的构造函数,就说明了这一点

有效端口值介于0和65535之间.端口号为零将使系统在绑定操作中获取临时端口.

实质上,只需传入一个InetSocketAddress,使用0作为端口参数,这将导致选择一个随机端口.

ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
serverSocketChannel.configureBlocking(false);
// Use wildcard ip (*) and ephemeral port
serverSocketChannel.socket().bind(new InetSocketAddress(0)); 
Run Code Online (Sandbox Code Playgroud)