Java 当每台主机监听同一端口时,路由器如何知道向谁发送新消息?

Java 当每台主机监听同一端口时,路由器如何知道向谁发送新消息?,java,networking,Java,Networking,我是一名初级软件开发人员,有网络方面的基本背景,但我脑子里有一个很长时间的问题。我目前正在设计一个基于Java的P2P聊天应用程序。它在本地主机上工作,没有在不同的机器/相同的本地网络和不同网络上的不同机器上尝试过,但我想知道:如果假设有5台机器在同一端口上使用socket.accept(),等待一个请求,完全知道每个客户机也是服务器(P2P),当来自另一个网络的计算机在这5台计算机共享的IP上发送请求时,当这是一个新请求且每个客户端使用相同的IP/端口时,路由器如何知道向谁发送连接请求 他们都

我是一名初级软件开发人员,有网络方面的基本背景,但我脑子里有一个很长时间的问题。我目前正在设计一个基于Java的P2P聊天应用程序。它在本地主机上工作,没有在不同的机器/相同的本地网络和不同网络上的不同机器上尝试过,但我想知道:如果假设有5台机器在同一端口上使用
socket.accept()
,等待一个请求,完全知道每个客户机也是服务器(P2P),当来自另一个网络的计算机在这5台计算机共享的IP上发送请求时,当这是一个新请求且每个客户端使用相同的IP/端口时,路由器如何知道向谁发送连接请求

他们都会收到相同的数据包,还是路由器只选择一台机器来接收这个数据包


谢谢您的时间。

我不是100%确定,但据我记忆,这或多或少是随机的,只有1人会收到包裹。
无论如何,试着看一看

路由器通常只处理IP地址,而你的问题没有提到IP地址。我认为这表明了你应该花时间研究的地方。“这5台计算机中的每台都共享IP”-5台不同的计算机不会公开共享相同的IP,然后每个计算机都将通过PAT over NAT按端口号排序。但是外面的一个怎么能指向里面的一个呢?@Anon假设NAT/PAT在使用。。。即使是这样,仍将始终有五个不同的IP/端口对。因此,数据包将被发送到任何具有匹配IP和端口的计算机。