netty如何确定读取何时完成?

时间:2015-02-12 09:04:18

标签: java networking netty nio

以下是echo服务器的ChannelHandler

enter image description here

Netty框架将调用channelReadComplete()方法通知处理程序,对channelRead()的最后一次调用是当前批次中的最后一条消息。

我的问题是,由于数据是通过中继传输的,因此Netty知道a batch of message何时完成?

1 个答案:

答案 0 :(得分:5)

一旦没有更多数据要从底层传输中读取,就会触发

channelReadComplete()。在谈论SocketChannels时,这可能是以下两种情况之一:

  1. read(...)返回0
  2. 读取(...)传递给它的缓冲区有1024个字节要填充,但是填充的字节少于1024个。