Netty大消息没有通过。 INTEREST_CHANGED事件抛出两次

时间:2012-12-27 04:10:01

标签: java netty

我有一台服务器正在使用Netty。客户端发送一些握手消息,服务器回复。这些是小消息,这些消息没有问题。

但是,当服务器尝试发送一些大型消息(每个大小为131139字节)时,似乎它们已被发送,ChannelFuture的{​​{1}}返回isSuccess()true返回getCause()。但是,客户端永远不会获得完整的消息,只会获得第一条消息的第一个null字节。在4或5条消息之后,netty停止尝试发送新消息。

我在发送消息之前正在阅读频道的4097(它总是返回isWritable())。仅在true的{​​{1}}被触发时才会尝试下一条消息。将消息写入通道后,日志显示“INTEREST_CHANGED”事件被抛出两次,operationComplete更改为ChannelFutureListener,然后立即更改为isWritable。但这条消息永远不会传达给客户。

false

任何人都可以告诉我为什么消息没有通过?

更新:它实际上是第一条消息的4097字节。我没有计算标记数据包长度的前4个字节。

更新:如果传出数据包长度小于或等于4097字节,则一切正常。仅当数据包大于4097字节时,Netty才会中断。它的4097,而不是4096.它是响铃吗?

1 个答案:

答案 0 :(得分:1)

好的,我的坏。问题出在客户端。读取套接字的线程上有一个无限循环,因此传入的数据没有被处理。