boost::asio網(wǎng)絡(luò)傳輸錯(cuò)誤碼的一些實(shí)驗(yàn)結(jié)果(recv error_code)
錯(cuò)誤碼很重要,可以由此判斷網(wǎng)絡(luò)連接到底發(fā)生了神馬事情,從而驅(qū)動(dòng)高層邏輯的行為。只有籠統(tǒng)的錯(cuò)誤碼判斷的網(wǎng)絡(luò)層是不夠規(guī)范的,鄙人覺得有些錯(cuò)誤碼還是需要在網(wǎng)絡(luò)層就區(qū)分開的,特此記錄一些當(dāng)前實(shí)驗(yàn)的錯(cuò)誤碼以及發(fā)生原因。以下是一部分在async_receive()的handler處捕獲到的比較有用的錯(cuò)誤碼
錯(cuò)誤碼(十進(jìn)制) | 枚舉 | 發(fā)現(xiàn)原因 |
10009 | boost::asio::error::bad_descriptor | 在一個(gè)已經(jīng)關(guān)閉了的套接字上執(zhí)行async_receive() |
995 | boost::asio::error::operation_aborted | 正在async_receive()異步任務(wù)等待時(shí),本端關(guān)閉套接字 |
10054 | boost::asio::error::connection_reset | 正在async_receive()異步任務(wù)等待時(shí),遠(yuǎn)端的TCP協(xié)議層發(fā)送RESET終止鏈接,暴力關(guān)閉套接字。常常發(fā)生于遠(yuǎn)端進(jìn)程強(qiáng)制關(guān)閉時(shí),操作系統(tǒng)釋放套接字資源。 |
2 | boost::asio::error::eof | 正在async_receive()異步任務(wù)等待時(shí),遠(yuǎn)端關(guān)閉套接字,這里跟10054發(fā)生的情況似乎一樣,但是實(shí)際上應(yīng)該是有區(qū)別的,具體神馬區(qū)別,由回復(fù)中jack的說法,這個(gè)是遠(yuǎn)端正常關(guān)閉套接字。 |
posted on 2011-05-06 18:06 釀妹汁 閱讀(18687) 評(píng)論(5) 編輯 收藏 引用 所屬分類: C++