我正在撰寫簡單的 http 服務器。我想shutdown
在服務器發送所有資料后進行套接字。我認為將write()
套接字的回傳位元組與實際內容長度進行比較,但我讀到回傳值只是意味著資料移動到套接字的發送緩沖區。(我不確定,我不知道如何檢查它)
如果是這樣,我可以在檢查位元組是否相同后關閉套接字嗎?如果發送的資料需要在服務器發送FIN
標志后在 TCP 級別重傳怎么辦?
uj5u.com熱心網友回復:
呼叫 shutdown(SHUT_WR) 時,作業系統不會丟棄您寫入的資料。如果另一端已經關閉了它的一端(你可以知道,因為你收到了 0 個位元組),那么你應該能夠關閉套接字,并且作業系統將保持它打開,直到它完成發送所有內容。
FIN 被視為資料的一部分。如果另一端沒有收到它必須重新發送它,并且它不會被處理,直到它收到之前的所有內容。這稱為“優雅關閉”或“優雅關閉”。這與 RST 不同,RST 表示應立即中止連接。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/479881.html
上一篇:并發服務器執行緒-給出系結錯誤
下一篇:面對關系“base_post”不存在第1行:...,“base_post”。“featured”,“base_post”。“slug”FROM“base_post...問題。有人可以幫助我嗎?