鑑於該堆棧跟蹤片斷官方理由「軟件導致連接中止:套接字寫入錯誤」
產生的原因: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