我已经使用java套接字编写了客户端和服务器。两台机器在同一网络上。当我使用本地 IP 地址进行连接时,没有任何问题。但是,如果我使用公共(public)IP地址,连接超时,客户端抛出“SocketException:连接重置”,服务器抛出“SocketException:对等方重置连接:套接字写入错误”。这种情况大多数时候都会发生,但连接成功的情况却千载难逢。我可以从客户端计算机成功 ping 服务器本地地址和路由器。
我已进入路由器,为服务器计算机分配一个永久 IP 地址,并将相关端口上的所有流量转发到该 IP 地址。不幸的是,这是我认为可以解决问题的唯一方法,但事实并非如此。我也关闭了服务器上的Windows防火墙,仍然没有运气。
客户端:(IP取自whatismyip.com)
Socket s = new Socket("xx.xxx.xxx.xx", 27499);
连接。
服务器:
InetAddress ip = InetAddress.getLocalHost();
ServerSocket ss = new ServerSocket(27499, 0, ip);
Socket cs = ss.accept();
如有任何帮助,我们将不胜感激。如果需要,我可以提供更多代码。
最佳答案
“SocketException:连接被对等方重置:套接字写入错误”
这意味着服务器实际上拒绝连接,可能是防火墙问题,服务器拒绝连接,服务器实际上已关闭或过载。
关于互联网上的 Java 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16095420/