在创建客户端时,您如何知道在java中为Socket对象选择的有效端口是什么?
例如,我尝试过Socket("localhost", 0)
。
但是,由于无法绑定到端口,我最终会抛出异常。
我知道当端口为0时,ServerSocket绑定到任何空闲端口。初始化套接字时,客户端是否有类似的设置?
答案 0 :(得分:2)
来自JavaDocs:
public Socket(InetAddress address, int port)
throws IOException
字符串不是InetAddress
。使用InetAddress.getByName()
从字符串创建InetAddress
(确保字符串是网站的主机名)。
注意:您无法始终自由选择使用哪个端口,在某些系统上,可能会保留范围并将其视为用户应用程序的禁区。
答案 1 :(得分:2)
客户端需要知道服务器正在侦听哪个端口。 What Is a Socket?有详细解释,Reading from and Writing to a Socket有示例代码。
答案 2 :(得分:1)
该参数指定要连接的目标端口,而不是要绑定的本地端口。本地端口是自动分配的,您不必担心。您需要知道要连接的服务器端口。对目标(连接)端口使用零是没有意义的。