我的ServerSocket
听取LAN连接并接受它们,但是当我尝试通过我的手机连接到它时 - 使用3G连接 - 它似乎没有连接。
我尝试使用getMyIP
网站获取IP
并尝试连接到它,它确实得到了正确的IP
(使用我的路由器检查过)但是没有连接完全接受。
我尝试在Windows 7和路由器上打开端口。
我将这些行放在我的Server构造函数中:
ss = new ServerSocket(port);
host=ss.getInetAddress().getHostAddress();
我将主机上的ip设为0.0.0.0
感谢您的帮助。
答案 0 :(得分:2)
- 当您处于LAN
时,您可以使用Private IP
以及Public IP ranges
- 但是,当您使用Internet
访问位于您所在位置的服务器时,您需要 static Public IP address.
- 您可以从您的ISP请求static Public IP address
一些额外的费用,还有一些网站上的网站有些如何根据您的动态IP提供静态IP
专用IP范围无法通过互联网使用。
Class A - 10.0.0.0 - 10.255.255.255
Class B - 172.16.0.0 - 172.31.255.255
Class C - 192.168.0.0 - 192.168.255.255
答案 1 :(得分:1)
您需要拥有公共IP地址。如果您有路由器,它必须将您要公开的端口的流量传递给您的计算机。如果您有防火墙,则必须允许外部连接到此端口。
无论您使用哪种语言,您所做的所有更改都是相同的,并且您无法通过Java来解决需要执行这些操作的问题。
答案 2 :(得分:0)
ipconfig
命令来获取分配给您的IP地址。使用以下代码绑定到特定的IP地址
InetSocketAddress insa = new InetSocketAddress("22.23.23.111", 9090);
ServerSocket ss = new ServerSocket();
ss.bind(insa);
String host=ss.getInetAddress().getHostAddress();
System.out.println(host);
这将打印分配给您的IP地址。