我有一台服务器正在使用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.它是响铃吗?
答案 0 :(得分:1)
好的,我的坏。问题出在客户端。读取套接字的线程上有一个无限循环,因此传入的数据没有被处理。