我没有遇到使用localips的套接字,但是一旦我将代码更改为使用public ips,我就一直得到java.net.ConnectException.
我使用端口8084,据我所知,在其他地方没有使用在命令提示符下,netstat -a | grep 8084显示:文件STDIN:TCP user-9114eb19a8:8084 user-9114eb19a8:0 LISTENING
我已经进入我的路由器并确保它是开放的我使用请求http://www.whatismyip.org获取我的公共IP
服务器:
serverSocket = new ServerSocket (8084);
客户:
socket = new Socket (hostaddr, 8084); //hostaddr is a string containing my public-IP //it works when the program is run on a localnetwork and I am using my local-ips
Brandon.. 12
什么类型的路由器?不要忘记,即使路由器上的端口可能已打开,您需要将路由器转发端口8084到目标计算机的内部IP,否则由于网络地址转换(NAT),路由器/防火墙不知道是什么一旦它到达那里就处理流量.
例如,您的客户端PC位于加利福尼亚州,IP为10.1.1.100,路由器使用公共IP为70.62.50.42.
您的服务器PC位于纽约,IP为192.168.1.121,位于内部IP为192.168.1.1且公共IP为40.20.26.63的路由器后面.您需要确保进入路由器并将端口8084(TCP)转发到内部地址192.168.1.121(内部服务器PC).
根据路由器的级别,这个术语将是端口转发,虚拟IP或静态NAT转换(还有一些其他但你明白了).
您不必调整客户端路由器上的任何设置,因为该路由器已经知道如何将您的请求路由到Internet.
什么类型的路由器?不要忘记,即使路由器上的端口可能已打开,您需要将路由器转发端口8084到目标计算机的内部IP,否则由于网络地址转换(NAT),路由器/防火墙不知道是什么一旦它到达那里就处理流量.
例如,您的客户端PC位于加利福尼亚州,IP为10.1.1.100,路由器使用公共IP为70.62.50.42.
您的服务器PC位于纽约,IP为192.168.1.121,位于内部IP为192.168.1.1且公共IP为40.20.26.63的路由器后面.您需要确保进入路由器并将端口8084(TCP)转发到内部地址192.168.1.121(内部服务器PC).
根据路由器的级别,这个术语将是端口转发,虚拟IP或静态NAT转换(还有一些其他但你明白了).
您不必调整客户端路由器上的任何设置,因为该路由器已经知道如何将您的请求路由到Internet.