4

这更像是一个一般的套接字问题。在 Java 中,如果我有一个绑定到特定端口的 ServerSocket,比如 4444,我知道它正在侦听连接请求。accept() 方法阻塞,直到收到连接请求并返回一个新的 Socket 与客户端通信。返回的 Socket 的远程端点是客户端的 IP 地址和端口。

但是,我感到困惑的是,返回的 Socket 的本地端口与正在侦听请求的 ServerSocket 的端口号相同(在本例中为 4444)。我以为两个套接字不能绑定到同一个端口?返回的 Socket 不会是服务器上的不同端口吗?

4

2 回答 2

6

两个 ServerSocket 不能监听相同的 IP 地址和端口。可能有两个 ServerSockets 监听不同的 IP 和相同的端口。

本地和远程的两个套接字不能具有相同的 IP 和端口。如果远程 IP 和端口不同,许多 Socket 的本地端口可以相同。

于 2012-08-10T16:37:09.497 回答
0

您不能使用多个套接字来侦听给定的 IP:端口组合,但可以存在多个接受的到同一组合的连接。

连接由本地 IP 地址和端口以及远程 IP 地址和端口的组合来标识。

于 2012-08-10T16:38:32.497 回答