插座复位的原因是什么

What is the reason of socket reset

本文关键字:是什么 复位 插座      更新时间:2023-10-16

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

共有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行

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

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

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