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
internet上的Java套接字_Java_Sockets_Networking_Router - Fatal编程技术网

internet上的Java套接字

internet上的Java套接字,java,sockets,networking,router,Java,Sockets,Networking,Router,我已经使用java套接字编写了一个客户机和服务器。这两台机器在同一个网络上。当我使用本地IP地址连接时,没有问题。但是,如果我使用公共IP地址,连接超时,客户端抛出“SocketException:connection reset”,服务器抛出“SocketException:connection reset by peer:socket write error”。这种情况在大多数情况下都会发生,但这种连接实际上是千载难逢的。我可以成功地从客户端计算机ping服务器本地地址和路由器 我已进入路由

我已经使用java套接字编写了一个客户机和服务器。这两台机器在同一个网络上。当我使用本地IP地址连接时,没有问题。但是,如果我使用公共IP地址,连接超时,客户端抛出“SocketException:connection reset”,服务器抛出“SocketException:connection reset by peer:socket write error”。这种情况在大多数情况下都会发生,但这种连接实际上是千载难逢的。我可以成功地从客户端计算机ping服务器本地地址和路由器

我已进入路由器,将服务器计算机分配到永久IP地址,并将相关端口上的所有流量转发到该IP地址。不幸的是,这是我唯一认为可以解决这个问题的事情,但事实并非如此。我还关闭了服务器上的windows防火墙,仍然没有运气

客户:(ip取自whatismyip.com)

连接

服务器:

InetAddress ip = InetAddress.getLocalHost();
ServerSocket ss = new ServerSocket(27499, 0, ip);
Socket cs = ss.accept();
任何帮助都将不胜感激。如果需要,我可以提供更多代码。

“SocketException:对等方重置连接:套接字写入错误”


这意味着服务器实际拒绝连接,可能是防火墙问题,服务器拒绝连接,服务器实际停机或过载。

可能是防火墙问题,也可能是端口转发问题issue@MadProgrammer我可以假设这不是防火墙问题,因为服务器也在抛出异常吗?这意味着至少有一些通信正在发生?我首先禁用防火墙进行测试,看看会发生什么。但是我会检查服务器连接到外部世界的端口转发设置,以确保连接正确地定向到服务器。我也会尝试1-通过本地机器连接到服务器,2-连接到同一机器上的服务器,如果没有问题,它不太可能是防火墙,但如果防火墙阻止外部IP范围,也可能是防火墙。当我禁用windows防火墙时,会发生这种情况。我可以确定服务器已经启动,并且没有过载,因为这是唯一的连接。实际引发异常的行是
oos=newObjectOutputStream(clientsocket.getOutputStream())将客户端和服务器上的堆栈跟踪打印到已知位置。这可以为您提供服务器拒绝来自客户端的连接尝试的原因的线索。
InetAddress ip = InetAddress.getLocalHost();
ServerSocket ss = new ServerSocket(27499, 0, ip);
Socket cs = ss.accept();