插座复位的原因是什么
What is the reason of socket reset
我有问题。我的套接字连接中断,找不到路由原因。
共有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位的分组。
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- C++避免重复声明的语法是什么
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- C++从另一个类访问公共静态向量的正确方法是什么
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- C++中名称篡改的目的是什么
- 在 c++ 中拥有一组结构的正确方法是什么?
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 是什么阻止DOMTimerCoordinator::NextID进入无休止的循环
- 派生类销毁的最佳实践是什么
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 通过JNI传递数据数组的最快方法是什么
- "using namespace std;"在C++的作用是什么?
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 文件系统:复制功能的速度秘诀是什么
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 是什么原因导致它无法编译?它是声明签名还是在函数本身的实现中
- 插座复位的原因是什么