鉴于该堆栈跟踪片断官方理由“软件导致连接中止:套接字写入错误”
产生的原因:java.net.SocketException异常: 软件导致连接中断: 套接字写入错误
在 java.net.SocketOutputStream.socketWrite0(本地 法)
我试着回答以下问题:
- 什么代码抛出此异常? (JVM?/ Tomcat的?/我的代码?)
- 是什么原因导致这种异常被抛出?
关于#1:
Sun的JVM源不包含这个确切的消息,但我认为该文本软件导致连接中止:套接字写入错误是从本机实现的SocketOutputStream
:
private native void socketWrite0(FileDescriptor fd, byte[] b, int off,
int len) throws IOException;
关于#2
我的猜测是,它是在客户端获得完整响应(例如,发送的请求,但得到充分反应之前,它得到了关闭/停止/离线)
问题:
- 是上述假设是否正确(#1和#2)?
- 可以这样从情况diffrentiated:“无法写入到客户端,由于对服务器侧的网络错误”?或者会呈现相同的错误信息?
- 还有最重要的:是否有正式文件(来自Sun e.g),说明上面?
我需要有一个证明,这个堆栈跟踪是套接字客户端的“过错”,并没有什么服务器可以做,以避免它。 (除了捕获异常,或使用非Sun JVM SocketOutputStream,虽然两者都不能真正避免客户端终止的事实)
我在使用Firefox取消下载时遇到此问题 – koppor 2013-10-25 17:26:37
Hey Eran在发送/写入('outs.write(audioBytes);')'byte []'到'OutputStream'时,我也得到这个异常。当用户点击任何其他菜单(发送服务器请求)时音频正在播放和播放时,控制台上出现相同的错误。所以忽略这个异常是安全的吗? – Amogh 2015-03-10 06:46:19
@Amogh - 看起来是的,是的。基本上从答案描述的内容来看,这是一个Windows特定的错误,但我假设在Linux上,您将得到相同的异常,只是使用不同的措辞......(我的外行人对此的理解基本上是这是您发送通过套接字到某个远程位置X和X在中间断开连接,但我确定它不是描述它的最准确的方式) – 2015-03-10 18:35:42