古詩詞大全網 - 四字成語 - socket error 10053,10054究竟是怎麽引起的

socket error 10053,10054究竟是怎麽引起的

出現10053的原因是因為在妳執行這次send的時候對端已經執行過closesocket了,而發送的數據還是被成功的推入了發送緩沖區中,因此返回了0,此時妳可能還沒得到FIN消息,而緊接著recv這邊就得到了對端關閉socket的FIN消息,因此此時需要放棄發送緩沖中的數據,異常終止連接,所以得到了 10053錯誤:您的主機中的軟件中止了壹個已建立的連接。 而為什麽又能得到10054的錯誤號,原因應該在於妳設置了SO_LINGER了,壹但設置了它,則有壹個等待時間,在該等待時間內可以處理發送緩沖區的數據,壹但超時或者發送緩沖都被發送完並被確認,則服務端有可能發送RST消息而不是FIN,此時就應該得到重置錯誤,也就是10054。 不同的系統對SO_LINGER的實現方式不壹樣,得到的結果也不壹樣,不知道按我這樣解釋是否對妳有幫助。如果我有理解錯誤,歡迎大家指正。