这更像是一个普通的套接字问题。在Java中,如果我将ServerSocket绑定到特定端口,例如4444,我就知道它正在侦听连接请求。 accept()方法阻塞,直到收到连接请求,并返回一个新的Socket以与客户端通信。返回的Socket的远程端点是客户端的IP地址和端口。
但是,我感到困惑的是,返回的Socket的本地端口与正在侦听请求的ServerSocket的端口号相同(在本例中为4444)。我以为两个套接字不能绑定到同一个端口?返回的Socket不会是服务器上的不同端口吗?
答案 0 :(得分:6)
两个ServerSockets无法侦听相同的IP地址和端口。可以让两个ServerSockets侦听不同的IP和相同的端口。
两个套接字不能具有本地AND远程的相同IP和端口。对于许多套接字,本地端口可以是相同的,提供远程IP&港口不同。
答案 1 :(得分:0)
您不能在给定的IP:端口组合上使用多个套接字 listen ,但可以存在多个接受相同组合的连接。
通过本地IP地址和端口以及远程IP地址和端口的组合来标识连接。