錯誤碼很重要,可以由此判斷網(wǎng)絡(luò)連接到底發(fā)生了神馬事情,從而驅(qū)動高層邏輯的行為。只有籠統(tǒng)的錯誤碼判斷的網(wǎng)絡(luò)層是不夠規(guī)范的,鄙人覺得有些錯誤碼還是需要在網(wǎng)絡(luò)層就區(qū)分開的,特此記錄一些當前實驗的錯誤碼以及發(fā)生原因。
以下是一部分在async_receive()的handler處捕獲到的比較有用的錯誤碼
錯誤碼(十進制) |
枚舉 |
發(fā)現(xiàn)原因 |
10009 |
boost::asio::error::bad_descriptor |
在一個已經(jīng)關(guān)閉了的套接字上執(zhí)行async_receive() |
995 |
boost::asio::error::operation_aborted |
正在async_receive()異步任務(wù)等待時,本端關(guān)閉套接字 |
10054 |
boost::asio::error::connection_reset |
正在async_receive()異步任務(wù)等待時,遠端的TCP協(xié)議層發(fā)送RESET終止鏈接,暴力關(guān)閉套接字。常常發(fā)生于遠端進程強制關(guān)閉時,操作系統(tǒng)釋放套接字資源。 |
2 |
boost::asio::error::eof |
正在async_receive()異步任務(wù)等待時,遠端關(guān)閉套接字,這里跟10054發(fā)生的情況似乎一樣,但是實際上應(yīng)該是有區(qū)別的,具體神馬區(qū)別,由回復(fù)中jack的說法,這個是遠端正常關(guān)閉套接字。 |
只是一些淺陋的測試,目前覺得有用的也就是這幾個,不正確的地方請送我雞蛋。