给定此堆栈跟踪代码段
引起原因:java.net.SocketException:软件导致连接中止: java.net.SocketOutputStream.socketWrite0(本地方法)处的套接字写入错误
java.net.SocketException
java.net.SocketOutputStream.socketWrite0
我试图回答以下问题:
关于#1:
Sun的JVM源不包含此确切消息,但是我认为文本软件导致连接中止:套接字写入错误来自的本机实现SocketOutputStream:
Sun
SocketOutputStream
private native void socketWrite0(FileDescriptor fd, byte[] b, int off, int len) throws IOException;
关于#2
我的猜测是,这是由于客户端在获得完整响应之前(例如,发送了一个请求,但在获得完整响应之前,它已关闭/终止/脱机)终止了连接。
问题:
我需要证明此堆栈跟踪是套接字客户端的“故障”,并且服务器无法做任何事情来避免它。(捕获异常或使用非Sun JVM SocketOutputStream除外,尽管两者都不能真正避免客户端已终止的事实)
当本地网络系统中止连接时,例如在数据重传失败后WinSock关闭已建立的连接(接收方从不确认在数据流套接字上发送的数据)时,会发生此错误。