我写了一个使用java套接字的客户端和服务器。这两台机器位于同一网络中。当我使用本地IP地址连接时,没有问题。但是,如果我使用公共IP地址,连接超时并且客户端抛出“SocketException:连接重置”,并且服务器抛出“SocketException:通过peer:socket写入错误重置连接”。大多数情况下都会发生这种情况,但一旦发生蓝色月亮,连接就会成功。我可以成功地从客户端计算机ping服务器本地地址和路由器。互联网上的Java套接字
我已经进入我的路由器,将服务器机器分配给永久IP地址,并将相关端口上的所有流量转发给该IP地址。不幸的是,这是我认为可以解决问题的唯一方法,事实并非如此。我也关闭了服务器上的Windows防火墙,仍然没有运气。
客户端:(从whatismyip.com截取IP)
Socket s = new Socket("xx.xxx.xxx.xx", 27499);
进行连接。
服务器:
InetAddress ip = InetAddress.getLocalHost();
ServerSocket ss = new ServerSocket(27499, 0, ip);
Socket cs = ss.accept();
任何帮助,将不胜感激。如有必要,我可以提供更多代码。
可能是防火墙问题,可能是端口转发问题 – MadProgrammer
@MadProgrammer我可以认为它不是防火墙问题,因为服务器也在抛出异常吗?暗示至少有一些交流发生? – 0nyx
我通过禁用防火墙进行测试并查看会发生什么。但我会检查服务器连接的端口转发设置,以确保连接已正确指向服务器。我也会尝试1-通过本地机器连接到服务器,并且2-连接到同一台计算机上的服务器,如果你没有问题,它不可能是防火墙,但是如果防火墙是阻止的外部IP范围 – MadProgrammer