我写好一个socket服务端放到一个外网服务器上,然后有一个客户公司是个局域网,一个NAT口下有N台电脑。客户端创建socket的时候是IP+Port的,那N台电脑的外网IP肯定是一样,创建的socket端口是否会重复一样?
服务器会不会收到2个socket连接的终结点是一样的?A电脑:111.111.11.11:90001,B电脑 111.111.11.11:90001。
如果知道此问题的朋友给个可靠的回答,其它不懂的就不要掺和。谢谢
路由器会进行端口号转换,服务器收到的是转换后的端口号,不同电脑,端口号不同
详见 How do two computers connect to same external address through NAT?
服务器收到的IP一样,但端口不一样,端口会是转换成外网的端口。这正是NAT的作用所在。
并且,你建立连接时指定的端口都是服务器的地址和端口,跟客户端本身无关。
端口不用管,你可以在服务端收到请求后把端口显示出来,即使是同一台电脑多个客户端也会是不同的端口的,