给定此堆栈跟踪代码段
引起原因: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)?
- 是否可以与以下情况区别开来:“由于服务器端发生网络错误而无法写入客户端”?还是会呈现相同的错误消息?
- 最重要的是:是否有正式文件(例如来自Sun的文件)说明上述内容?
我需要证明此堆栈跟踪是套接字客户端的“故障”,并且服务器无法做任何事情来避免它。(捕获异常或使用非Sun JVM SocketOutputStream除外,尽管两者都不能真正避免客户端已终止的事实)
outs.write(audioBytes);
)byte[]
中OutputStream
。当音频播放并且播放时,如果用户单击任何其他菜单(发送服务器请求),则在控制台上会出现相同的错误。那么忽略此异常是否安全?