Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从不同路由器上的客户端连接到服务器_Java_Sockets_Client_Serversocket_Portforwarding - Fatal编程技术网

Java 从不同路由器上的客户端连接到服务器

Java 从不同路由器上的客户端连接到服务器,java,sockets,client,serversocket,portforwarding,Java,Sockets,Client,Serversocket,Portforwarding,我正在尝试从连接到不同路由器的计算机连接到我家一台计算机上的服务器插座。我在谷歌上搜索了几个小时,已经设置了港口转运。我已经尝试用我的公共IP地址和端口号创建套接字,但没有成功。我的问题是:知道我的公共IP地址、服务器的本地IP地址和端口号后,如何创建套接字,使其正确连接到服务器 这些是我尝试过的构造函数,但没有成功: new Socket(my_public_ip_address, port); new Socket(my_local_ip_address, port); <- this

我正在尝试从连接到不同路由器的计算机连接到我家一台计算机上的服务器插座。我在谷歌上搜索了几个小时,已经设置了港口转运。我已经尝试用我的公共IP地址和端口号创建套接字,但没有成功。我的问题是:知道我的公共IP地址、服务器的本地IP地址和端口号后,如何创建套接字,使其正确连接到服务器

这些是我尝试过的构造函数,但没有成功:

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
新套接字(我的公共ip地址、端口);

新套接字(我的本地ip地址、端口) 首先:如果你不走运(像我一样),你将无法建立到服务器计算机的连接。(在我的例子中,大学网络会阻止所有传入连接)

因此,问题可能不是服务器,而是到路由器的路径(连接)

在您的情况下,我将首先尝试从您的客户机开始跟踪您的服务器。追踪路由至少应该到达您的路由器。(我不擅长计算机网络,所以如果我弄错了,请纠正我)

这么说吧

  • pc X具有localipX,并通过publicipX连接到routerX
  • pc Y具有localipY并通过PublicPy连接到routerY
您必须执行以下操作:

  • 通过特定端口(P)从X向publicipY发出请求
  • 在您的路由器中进行配置,将来自端口P的所有请求重定向到LocalPX到端口X(X应用程序正在侦听的端口)

  • 我知道你提到你做了端口转发等等,但是请检查上面的步骤,也许你错过了一些。如果不起作用,请检查防火墙,确保所有使用的端口都已打开,并调查所有连接的节点(即X正在发送请求,publicipX发送请求,publicipY获取并确保Y获取请求)。

    1。可以添加错误输出/堆栈跟踪吗?2.您的客户端计算机在网络中是否由您的公共IP(公共路由器->客户端和公共路由器->第二路由器->服务器)显示?您可能无法从内部网络使用公共IP连接到路由器的公共接口。您可以尝试直接连接到服务器的内部IP或第二个路由器的“公共”IP。这里的问题几乎肯定是您在路由器中使用NAT,这会破坏端到端连接的能力。Java代码与此无关。您需要配置路由器以允许传入连接;超级用户可能是一个更有用的网站。感谢你们的快速回复很多家伙,我一定会尝试你的所有建议出来明天!