Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.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_C++_Sockets - Fatal编程技术网

Java 插座复位的原因是什么

Java 插座复位的原因是什么,java,c++,sockets,Java,C++,Sockets,我有问题。我的套接字连接中断,无法找到路由原因 有2台服务器。这是两台不同国家的计算机。第一个运行Java程序,该程序通过套接字等待连接。第二服务器运行C++程序,连接到java服务器,并在一个端口上打开多个套接字。下一个服务器通过这些套接字通过UTF字符串进行交换 问题是有时套接字连接中断。这不是网络或电缆拔出的问题,因为2个插座可以中断,但其余8个可以正常工作。这两台服务器的问题看起来是一样的。每台服务器都有一个线程,该线程调用blocking read()方法,两个方法同时抛出一个异常。J

我有问题。我的套接字连接中断,无法找到路由原因

有2台服务器。这是两台不同国家的计算机。第一个运行Java程序,该程序通过套接字等待连接。第二服务器运行C++程序,连接到java服务器,并在一个端口上打开多个套接字。下一个服务器通过这些套接字通过UTF字符串进行交换

问题是有时套接字连接中断。这不是网络或电缆拔出的问题,因为2个插座可以中断,但其余8个可以正常工作。这两台服务器的问题看起来是一样的。每台服务器都有一个线程,该线程调用blocking read()方法,两个方法同时抛出一个异常。Java服务器抛出以下命令:

java.net.SocketException:连接重置 位于java.net.SocketInputStream.read(未知源) 位于java.net.SocketInputStream.read(未知源) 位于java.net.SocketInputStream.read(未知源) 位于java.io.DataInputStream.readUnsignedShort(未知源) 位于java.io.DataInputStream.readUTF(未知源) 位于java.io.DataInputStream.readUTF(未知源)

和C++服务器抛出以下内容:

错误10054(对等方重置连接)。 接收数据时,远程主机强制关闭了现有连接 CSocket::Receive()中的错误,第199行

所有明显的假设,如“其中一台服务器关闭了套接字”和“其中一台服务器发送了无限量的数据”,都已经过检查。没有检测到问题的原因。服务器可以正常工作1小时,然后5分钟内5个插座可以中断,接下来的0.5小时一切正常,下一个插座中断,等等


请建议去哪里查找问题路线的原因。谢谢。

由于应用程序崩溃、系统重新启动、远程主机硬关闭等各种原因,远程连接意外地强制关闭时。来自远程系统的内核向本地系统发送带有RST位的数据包。执行任何发送(可能是保持活动的数据包)或接收操作时的本地套接字随后会因此错误而失败。某些延迟设置组合也会导致设置了RST位的数据包。

使用调试器,在引发异常时中断,检查变量并逐步通过strack跟踪缩小范围。也许你可以找到原因,但我们无法找到,因为没有显示代码。但另一方面:即使代码非常完美,有时也会发生这种情况,因此您需要找到一种方法来处理这种情况。只需查找过去有关StackOverflow的类似问题。错误10054是您的Java服务器上的Windows barfing强制关闭其连接,您已经知道了。但是从我读到的内容来看,您可能希望检查您是否正确地从流中提取了所有数据,
readUnsignedShort
。随便看看。