【发布时间】:2016-10-04 20:22:17
【问题描述】:
我正在尝试从连接到不同路由器的计算机连接到我家的一台计算机上的 ServerSocket。我已经搜索了几个小时,并且已经设置了端口转发。我已经尝试使用我的公共 IP 地址和端口号创建 Socket,但没有成功。我的问题是:知道我的公网IP地址、服务器本地IP地址和端口号,如何创建一个Socket才能正确连接到服务器?
这些是我尝试过的构造函数,但没有成功:
new Socket(my_public_ip_address, port);
new Socket(my_local_ip_address, port); <- this one works only if both computers are connected to the same router
提前致谢!
【问题讨论】:
-
1.您可以添加错误输出/堆栈跟踪吗? 2. 您的客户端计算机是否在您的公共 IP 显示的网络内(公共路由器 -> 客户端和公共路由器 -> 第二个路由器 -> 服务器)?您可能无法使用来自内部网络的公共 IP 连接到路由器的公共接口。您可以尝试直接连接到服务器的内部 IP 或第二个路由器的“公共”IP。
-
这里的问题几乎可以肯定是您在路由器中使用了 NAT,这破坏了进行端到端连接的能力。 Java代码与它无关。您需要配置路由器以允许传入连接;超级用户可能是一个更有帮助的网站。
-
非常感谢大家的快速回复,明天我一定会尝试您的所有建议!
标签: java sockets client serversocket portforwarding