簡體   English   中英

在 CLOSE-WAIT 中寫入 SocketChannel

[英]Writing to SocketChannel in CLOSE-WAIT

我注意到當底層連接處於CLOSE-WAIT state 時, SocketChannel.write不會拋出任何異常。 這是預期的行為嗎? 如果是這樣,我怎樣才能確定連接不是ESTABLISHED

它不應該第一次拋出異常。 連接可能仍然是可寫的。 CLOSE_WAIT 表示已收到傳入的 FIN。 這意味着另一端已經完成了寫入。 它可能仍在閱讀:它可能只關閉了 output 的連接。 所以 TCP 必須寫入數據。 如果對等方已關閉整個連接,它將在收到寫入時發出 RST,您將在后續寫入時體驗到連接重置。

您的應用程序協議應該是不可能寫入由對等方關閉的連接,否則可能會在出現錯誤之前完成多次寫入。 TCP 不可能在第一次這樣的寫入時給你一個錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM