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

标签 java networking netty nio

下面是回显服务器的ChannelHandler

enter image description here

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

我的问题是,由于数据是在中继线上传输的,Netty 如何知道一批消息 何时完成?

最佳答案

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

  1. read(...) 返回 0
  2. read(...) 得到一个传递给它的缓冲区,该缓冲区有 1024 个字节要填充,但填充的字节数少于 1024 个。

关于java - netty如何确定读取何时完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28473252/

相关文章:

url - IIS7中的urlCompression是什么?

java - 如何使用对等点(二进制模型)从跟踪器响应中读取正确的端口

java - 如何阅读 Netty 日志

java - 英语 - 莫尔斯翻译器

Java - 行为决策 "instanceof"与标志

java - RestEASY 和 Jackson 不兼容 - NoSuchMethodException

asynchronous - 如何:使用Netty与Avro进行异步回调

java - 是否可以在 android 中备份和恢复数据库文件?非根设备

python - 同时使用相同端口、相同 IP 地址的应用程序/协议(protocol)

java - 如何使用netty中的SimpleChannelPool在连接错误时关闭 channel ?