netty 3.x,nio型号:
netty IO写线程最后会调用WritableByteChannel.write(ByteBuffer),netty会认为它写成功了,但实际上字节被写到了套接字输出缓冲区。
在某些情况下,物理网络链路断开,但此写操作不会抛出异常,甚至返回大于0的整数(表示写入了一些字节),此WritableByteChannel不能及时检测链路断开。因此,当netty为fireWriteComplete时,它并不意味着真正写入远程的一些字节。
如何判断某些字节成功写入remote的位置?
我知道心跳机制可以告诉我什么时候收到心跳ack,但是心跳机制会给我带来另一个问题。
发布于 2013-05-16 17:22:59
长话短说。你不能。更长的答案是在协议逻辑中实现它,比如发送和"ack“消息返回。
https://stackoverflow.com/questions/16578548
复制相似问题