首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >“软件导致连接中止:套接字写入错误”的官方原因

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

Stack Overflow用户
提问于 2010-01-24 17:52:05
回答 12查看 360.1K关注 0票数 163

给定此堆栈跟踪代码片段的

原因: java.net.SocketException:软件导致连接中止:套接字写入错误

(在java.net.SocketOutputStream.socketWrite0(Native方法中)

我试图回答以下问题:

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

关于#1的:

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

代码语言:javascript
复制
private native void socketWrite0(FileDescriptor fd, byte[] b, int off,
                 int len) throws IOException;

关于#2

我的猜测是,这是由于客户端在获得完整响应之前终止了连接(例如,发送了一个请求,但在获得完整响应之前,它被关闭/终止/脱机)

问题:

  1. 上面的假设是否正确(#1和#2)?
  2. 这是否可以与以下情况相区别:“由于服务器端的网络错误,无法写入客户端”?或者,这是否会呈现相同的错误消息?
  3. ,最重要的是:是否有官方文档(例如来自Sun)说明了

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

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2011-10-13 07:17:52

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

参见this MSDN article。另请参见Some information about 'Software caused connection abort'

票数 56
EN

Stack Overflow用户

发布于 2013-01-31 19:46:39

我最常看到的情况是,当工作站/笔记本电脑上的企业防火墙阻碍连接时,它会切断连接。

例如:我在同一台机器上有一个服务器进程和一个客户端进程。服务器正在侦听所有接口(0.0.0.0),而客户端尝试连接到公共/本地接口(请注意,不是环回接口127.0.0.1)。

如果机器的网络断开(例如wifi关闭),则连接形成。如果机器连接到公司网络(直接或vpn),则形成连接。

但是,如果机器连接到公共wifi (或家庭网络),那么防火墙就会踢开并终止连接。在这种情况下,将客户端连接到环回接口可以很好地工作,只是不能连接到home/public接口。

希望这能有所帮助。

票数 10
EN

Stack Overflow用户

发布于 2010-01-24 19:01:30

为了证明哪个组件发生了故障,我将使用wireshark监视TCP/IP通信,并查看谁实际关闭了端口,超时也可能是相关的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2126607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档