總結解決:java.net.SocketException: sendto failed: ECONNRESET (Connection reset by peer)

在給服務器上傳文件的時候,報了這個錯。java.net.SocketException: sendto failed: ECONNRESET (Connection reset by peer)。

有時候也報這個錯:java.net.SocketException: sendto failed: EPIPE (Broken pipe) 。

對這兩個錯是陌生的很,網上一搜,發現有好多同樣遇到的,回覆給出解決方法的很少,有解決方法的也各不相同。

總結一下網上給出的原因(除開網絡不好):

1、服務器限制了文件上傳大小或者連接超時啊(我讓後臺加大之後還是不行,pass)

2、Range頭設置不對的 (也是不行,http請求頭Range介紹:https://www.cnblogs.com/1995hxt/p/5692050.html)

3、這個也不行

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() .permitAll().build(); 

StrictMode.setThreadPolicy(policy);

4、System.setProperty("http.keepAlive", "false"); (這個沒試過)

5、成功解決:http請求使用的是長鏈接,改成短鏈接即可。通過修改請求頭:Connection = close。

異常產生原因是:

客戶端上傳圖片的http請求使用了長連接,但web端的長連接響應數量有限制,所以產生的現象是系統運行一段時間後,長連接的http請求報異常。http1.1協議默認是Connection=Keep-Alive,也就是長連接


解決參考自:

https://blog.csdn.net/asc2046/article/details/53180453



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章