当前位置: 首页 > 面试题库 >

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

阴波峻
2023-03-14
问题内容

给定此堆栈跟踪代码段

引起原因:java.net.SocketException:软件导致连接中止:
java.net.SocketOutputStream.socketWrite0(本地方法)处的套接字写入错误

我试图回答以下问题:

  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除外,尽管两者都不能真正避免客户端已终止的事实)


问题答案:

当本地网络系统中止连接时,例如在数据重传失败后WinSock关闭已建立的连接(接收方从不确认在数据流套接字上发送的数据)时,会发生此错误。



 类似资料:
  • 我正在尝试使用javapns库发送ios推送通知。代码在java 6上运行良好,但在java 7上不起作用。我正试图用java代码在ssl套接字上编写这段代码。插座getOutputStream()。写入(字节);但有以下例外:- 2015-09-24 02:01:17330[列表模式下的JavaPNS分组通知线程]错误JavaPNS。通知。PushNotificationManager(Push

  • 问题内容: 我找到了客户端/服务器代码,但出现此错误: java.net.SocketException:软件导致连接中止:recv失败 服务器代码: 客户代码: 服务器代码提供以下输出: 客户端代码给出以下输出: 问题答案: 服务器不等待来自客户端的任何数据,并且当服务器退出时,连接将关闭。 将这样的代码添加到服务器代码中:

  • 我使用HttpClient4.4发送get和post请求。并且我刚刚创建了一个httpclient的simpile包装器以方便使用: 当我使用这个类发送post请求时。奇怪的事情发生了: 第一次,我向服务器发送一个post请求,一分钟后就可以了,我向服务器发送一个同样的请求,也可以了。但几分钟后,我发出了一个同样的请求,有些不对劲: 但是,我仍然向服务器发送一个相同的请求,它又可以了。 每次我按照

  • 我正在尝试在java中使用httpPost请求(通过MultipartEntityBuilder)上传文件。但是我得到了一个软件导致的连接中止:套接字写入错误。 这是我的httpPost正文(在wireShark中) 代码端为: 和错误: 有什么想法吗?谢谢大家。

  • 我使用的是是一款开源的100%纯驱动程序,适用于。 -我有连接池配置下面 有时,我会遇到以下异常情况:无法从sql server获取连接。我不知道为什么? java.sql.SQLExc0019: I/O错误:连接重置由对等:套接字写入错误net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:1052)net.sourceforge.j

  • 问题内容: 我使用httpclient 4.4发送get和post请求。我刚刚创建了一个简单的httpclient包装器,以方便使用: 当我使用此类发送帖子请求时。发生了一些奇怪的事情: 第一次,我将发布请求发送到服务器,几分钟后没问题,我将相同的请求发送到服务器,也行。但是几分钟后,我发送了相同的请求,出现了错误: 但是之后,我仍然向服务器发送了相同的请求,再次可以。 每当我按照上述步骤尝试时,