2015-02-12 37 views
3

下面是一个ChannelHandler回声服务器。netty如何确定读取完成时的状态?

enter image description here

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

我的问题是,由于数据在树干上线转移,怎么会知道的Netty时a batch of message完成?

回答

3

一旦没有更多数据要从底层传输中读取,就会触发channelReadComplete()。在谈到SocketChannels这将是以下两种情况:

  1. 读(...)返回0
  2. 读(...)有一个缓冲通过了具有1024个字节来填补,但莱1024被填满。
+0

谢谢。这些明确的规则比一些高水平的模糊描述要好。 – smwikipedia 2015-02-16 01:51:54

+0

如果读取了任何数据,我认为channelReadComplete()也是由[Channel.read()](https://netty.io/4.0/api/io/netty/channel/Channel.html#read())触发的,即使还有更多的数据需要从底层传输中读取。 @Norman这是正确的吗?如果是这样,这种行为背后的任何原因?谢谢! – Aaron 2016-11-15 04:25:17

+0

是的,这是正确的... channelReadComplete()只是表示在当前的偶数循环运行中不会再有通道读取。所以你可以例如现在刷新 – 2016-11-15 13:41:40

相关问题