error connection reset by peer 104


connection reset by peer的常見原因

1.服務器的並發連接數超過了其承載量,服務器會將其中一些連接關閉;
2. errno = 104錯誤表明你在對一個對端socket已經關閉的的連接調用write或send方法,在這種情況下,調用write或send方法后,對端socket便會向本端socket發送一個RESET信號,在此之后如果繼續執行write或send操作,就會得到errno為104,錯誤描述為connection reset by peer。
具體的分析可以結合TCP的"四次揮手"關閉. TCP是全雙工的信道, 可以看作兩條單工信道, TCP連接兩端的兩個端點各負責一條. 當對端調用close時, 雖然本意是關閉整個兩條信道, 但本端只是收到FIN包. 按照TCP協議的語義, 表示對端只是關閉了其所負責的那一條單工信道, 仍然可以繼續接收數據. 也就是說, 因為TCP協議的限制, 一個端點無法獲知對端的socket是調用了close還是shutdown.

對於一個TCP連接,如果對端執行close操作,則會向本端發送一個FIN分節,這時候讀本端socket會返回0,我們就知道對方已經關閉了連接,通常這時候我們會在本地調用close來主動關閉本端連接。但如果對方socket已經執行了close的操作,本端socket還繼續在這個連接上寫數據,就會觸發對端socket發送RST報文,按照TCP的四次揮手原理,這時候本端socket應該也要開始執行close的操作流程了,而不是接着發數據.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM