天天看點

boost::asio網絡傳輸錯誤碼的一些實驗結果(recv error_code)

錯誤碼很重要,可以由此判斷網絡連接配接到底發生了神馬事情,進而驅動高層邏輯的行為。隻有籠統的錯誤碼判斷的網絡層是不夠規範的,鄙人覺得有些錯誤碼還是需要在網絡層就區分開的,特此記錄一些目前實驗的錯誤碼以及發生原因。

以下是一部分在async_receive()的handler處捕獲到的比較有用的錯誤碼

錯誤碼(十進制)

枚舉

發現原因

10009

boost::asio::error::bad_descriptor

在一個已經關閉了的套接字上執行async_receive()

995

boost::asio::error::operation_aborted

正在async_receive()異步任務等待時,本端關閉套接字

10054

boost::asio::error::connection_reset

正在async_receive()異步任務等待時,遠端的TCP協定層發送RESET終止連結,暴力關閉套接字。常常發生于遠端程序強制關閉時,作業系統釋放套接字資源。

2

boost::asio::error::eof

正在async_receive()異步任務等待時,遠端關閉套接字,這裡跟10054發生的情況似乎一樣,但是實際上應該是有差別的,具體神馬差別,由回複中jack的說法,這個是遠端正常關閉套接字。

隻是一些淺陋的測試,目前覺得有用的也就是這幾個,不正确的地方請送我雞蛋。

繼續閱讀