从另一台路由器上的客户端连接到服务器

时间:2016-10-04 20:22:18

标签: java sockets client serversocket portforwarding

我正在尝试通过连接到不同路由器的计算机连接到我家的一台计算机上的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

提前致谢!

2 个答案:

答案 0 :(得分:0)

首先:如果你运气不好(像我一样),你将无法建立与服务器计算机的连接。 (就我而言,大学网络会阻止所有传入的连接)。

所以也许你的服务器不是问题,而是路由器的路径(连接)。

在您的情况下,我首先尝试从您的客户端开始Traceroute您的服务器。 Traceroute至少应该到达您的路由器。 (我对计算机网络不好,所以请纠正我,如果我弄错的话)

答案 1 :(得分:0)

让我们说

  • pc X具有localipX并使用publicipX连接到routerX
  • pc Y具有localipY并使用publicipY连接到routerY

您必须执行以下操作:

  1. 通过特定端口(P)从X发出请求到publicipY
  2. 在您的routerY中配置以重定向来自端口P的所有请求将被发送到localipX到portX(X app正在侦听的端口)。
  3. 我知道你提到你做了一个端口转发等等,但请检查上面的步骤,也许你错过了一些。如果它不起作用,请检查防火墙并确保所有已使用的端口都已打开并调查所有连接的节点(即X正在发送请求,publicipX发送请求,publicipY获取它并确保Y得到它)。 / p>

相关问题