“软件导致连接中止:套接字写入错误”的官方原因

“软件导致连接中止:套接字写入错误”的官方原因

给定此堆栈跟踪片段

引起:java.nets.ocketException:软件导致连接中止:套接字写入错误
java.net.SocketOutputStream.socketWrite0(Native法)

我试图回答以下问题:

  1. 抛出此异常的代码是什么?(JVM?/Tomcat?/我的代码?)
  2. 是什么导致抛出此异常?

关于#1:

Sun的JVM源代码不包含确切的消息,但我认为文本软件导致连接中止:套接字写入错误的本机实现SocketOutputStream:

private native void socketWrite0(FileDescriptor fd, byte[] b, int off,
                 int len) throws IOException;

关于#2

我的猜测是,当客户端终止连接时,在得到完整的响应之前(例如发送请求,但在得到完整的响应之前,它被关闭/终止/脱机)。

问题:

  1. 上述假设是否正确(1和2)?
  2. 这是否与以下情况不同:“无法写入客户端,原因是

    服务器

    是否会产生相同的错误信息?
  3. 最重要的是:

    是否有说明上述情况的正式文件(如Sun的文件)?

我需要有一个证据,证明这个堆栈跟踪是套接字客户端的“错误”,而且服务器无法避免它。(除了捕获异常,或者使用非Sun JVM SocketOutputStream,尽管两者都不能真正避免客户机终止的事实)


胡说叔叔
浏览 1796回答 4
4回答

哈士奇WWW

这个java.net.SocketException在创建或访问错误时引发插座(如tcp)。这通常是在服务器终止连接(没有正确关闭连接)时造成的,因此在获得完整响应之前。在大多数情况下,这可能是由超时问题引起的(例如,响应需要太多时间,或者服务器被请求重载),或者客户端发送SYN,但它没有接收到ACK(确认连接终止)。对于超时问题,可以考虑增加超时值。套接字异常通常附带有关此问题的指定详细消息。详细信息示例:软件导致连接中止:recv失败。此错误表示试图发送消息,服务器已中止连接。如果在连接到数据库时发生了这种情况,这可能与使用不兼容连接器/JJDBC驱动程序.可能的解决方案:确保CLASSPATH中有适当的库/驱动程序。软件导致连接中止:连接。当有问题要连接到远程时,就会发生这种情况。例如由于病毒检查器拒绝远程邮件请求。.可能的解决方案:检查病毒扫描服务是否阻塞了传出连接请求的端口。软件导致连接中止:套接字写入错误。可能的解决方案:确保将正确的字节长度写入流。所以再检查一遍你发送的是什么。看这个螺纹.按对等点重置连接:套接字写入错误/对等方中止的连接:套接字写入错误应用程序没有检查服务器端是否已超时保持活动连接。可能的解决方案:在从连接读取之前,确保HttpClient是非空的。E 13222_01由对等点重置连接。连接已由对等方(服务器)终止。连接复位。由于对请求的请求,连接已由客户端终止或由连接的服务器端关闭。见:是什么导致我的java.nett.ocketException:连接重置?

HUH函数

为了证明哪个组件失败,我将使用以下方法监视TCP/IP通信威雷沙克看看是谁在紧急关闭港口,超时也可能是相关的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java