1

在创建客户端时,如何知道为 Java 中的 Socket 对象选择的有效端口是什么?

例如,我尝试过Socket("localhost", 0).

但是,由于无法绑定到端口,我最终抛出异常。

我知道当端口为0时ServerSocket绑定到任何空闲端口。初始化套接字时客户端是否有类似的设置?

4

3 回答 3

2

JavaDocs

public Socket(InetAddress address, int port)
       throws IOException

字符串不是InetAddress. 用于从字符串InetAddress.getByName()创建一个InetAddress(确保字符串是网站的主机名)。


注意:您不能总是自由地选择要使用的端口,在某些系统上,可能有一些范围被保留并被认为是用户应用程序的禁区。

于 2013-04-16T23:07:08.580 回答
2

客户端需要知道服务器正在监听哪个端口。What Is a Socket?有详细的解释。以及Read from and Writing to a Socket中的示例代码。

于 2013-04-16T23:10:00.230 回答
1

该参数指定要连接的目标端口,而不是要绑定的本地端口。本地端口是自动分配的,你不用担心。您确实需要知道要连接到哪个服务器端口。对目标(连接)端口使用零是没有意义的。

于 2013-04-17T00:11:07.563 回答