当前位置:  开发笔记 > 编程语言 > 正文

如何让Java套接字使用公共IP?

如何解决《如何让Java套接字使用公共IP?》经验,为你挑选了1个好方法。

我没有遇到使用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.



1> Brandon..:

什么类型的路由器?不要忘记,即使路由器上的端口可能已打开,您需要将路由器转发端口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.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有