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