boost::asio網絡傳輸錯誤碼的一些實驗結果(recv error_code)
睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接
錯誤碼(十進制)
枚舉
發現原因
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的說法,這個是遠端正常關閉套接字。
錯誤碼很重要,可以由此判斷網絡連接到底發生了神馬事情,從而驅動高層邏輯的行為。只有籠統的錯誤碼判斷的網絡層是不夠規范的,鄙人覺得有些錯誤碼還是需要在網絡層就區分開的,特此記錄一些當前實驗的錯誤碼以及發生原因。
以下是一部分在async_receive()的handler處捕獲到的比較有用的錯誤碼
只是一些淺陋的測試,目前覺得有用的也就是這幾個,不正確的地方請送我雞蛋。
RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成