錯誤碼很重要,可以由此判斷網絡連接到底發生了神馬事情,從而驅動高層邏輯的行為。只有籠統的錯誤碼判斷的網絡層是不夠規范的,鄙人覺得有些錯誤碼還是需要在網絡層就區分開的,特此記錄一些當前實驗的錯誤碼以及發生原因。
以下是一部分在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的說法,這個是遠端正常關閉套接字。 |
只是一些淺陋的測試,目前覺得有用的也就是這幾個,不正確的地方請送我雞蛋。