[英]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.