亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何修復java.net.SocketException:管道壞了?

如何修復java.net.SocketException:管道壞了?

慕少森 2019-09-20 17:02:10
我正在使用apache commons http客戶端使用post方法調用url來發布參數,并且它很少拋出以下錯誤。java.net.SocketException: Broken pipe        at java.net.SocketOutputStream.socketWrite0(Native Method)        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)        at java.io.BufferedOutputStream.write(BufferedOutputStream.java:105)        at java.io.FilterOutputStream.write(FilterOutputStream.java:80)        at org.apache.commons.httpclient.methods.ByteArrayRequestEntity.writeRequest(ByteArrayRequestEntity.java:90)        at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)        at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)        at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)        at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)有人可以建議導致此異常的原因以及如何調試它嗎?
查看完整描述

3 回答

?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

這是由:

  • 最常見的是,當另一端已經關閉時寫入連接;

  • 通常情況下,對等體關閉連接而不讀取其末尾已經掛起的所有數據。

因此,在這兩種情況下,您的應用程序協議定義都很糟糕。

還有第三個原因,我不會在這里記錄,但涉及對等方采取故意行動重置而不是正確關閉連接。


查看完整回答
反對 回復 2019-09-20
?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

SocketException:管道損壞,是由代碼讀取或寫入連接時關閉連接的“另一端”(客戶端或服務器)引起的。

這是客戶端/服務器應用程序中非常常見的例外,它從應用程序控件之外的客戶端或服務器接收流量。例如,客戶端是瀏覽器。如果瀏覽器進行Ajax調用,和/或用戶只是關閉頁面或瀏覽器,那么這可以有效地殺死所有通信?;旧?,只要另一端終止其應用程序,您就會看到此錯誤,并且您沒有預料到它。

如果您在應用程序中遇到此異常,那么這意味著您應檢查發生IO(輸入/輸出)的代碼,并使用try / catch塊將其包裝以捕獲此IOException。然后,由您決定如何處理這種半有效的情況。

在你的情況下,你仍然可以控制的最早的地方就是調用HttpMethodDirector.executeWithRetry- 所以確保調用是用try / catch塊包裝的,并按照你認為合適的方式處理它。

我強烈建議不要在調試/跟蹤級別以外的任何地方記錄SocketException-Broken Pipe特定錯誤。否則,這可以通過填充日志作為DOS(拒絕服務)攻擊的一種形式。針對這種常見情況,嘗試并強化并對您的應用程序進行負面測試。


查看完整回答
反對 回復 2019-09-20
  • 3 回答
  • 0 關注
  • 985 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號