netty 3.x,nio 模型:
netty IO 写入线程WritableByteChannel.write(ByteBuffer)
最终会调用,netty 会认为它写入成功,但实际上字节被写入套接字输出缓冲区。
在某些情况下,物理网络链接断开,但是这个写操作不会抛出异常,甚至返回一个大于0的整数(表示写入了一些字节),这个WritableByteChannel没有及时检测到链接断开。所以当 netty fireWriteComplete 时,并不意味着某些字节真的被写入了远程。
我怎样才能知道一些字节成功写入远程的位置?
我知道心跳机制可以判断何时收到心跳的确认,但是心跳机制会给我带来另一个问题。