在 netty 中对 LengthFieldBasedFrameDecoder 有更多的控制
Having more control on LengthFieldBasedFrameDecoder in netty
我在管道的开头添加了一个 new LengthFieldBasedFrameDecoder(64 * 1024, 0, 4)
,它工作得很好,但是当接收到整数(数据包的前 4 个字节,代表实际数据包的长度)时,什么也没有发生) 为负数或大于最大可能长度 64*1024
。
我希望 LengthFieldBasedFrameDecoder
在即将到来的数据包的大小大于 64 * 1024
或小于 1
时以某种方式通知我
我怎样才能做到这一点?
您需要编写自己的 LengthFieldBasedFrameDecoder
版本。也就是说,我们还可以添加一个受保护的方法,人们可以覆盖该方法来验证“已解析”的消息长度。这样,用户端的自定义将最少。
当 LengthFieldBasedFrameDecoder
发现负长度时,它会抛出 CorruptedFrameException
和相应的消息。此类异常应通过 ChannelEvent
传播到管道。所以你可以在处理程序中拦截和过滤异常。
我在管道的开头添加了一个 new LengthFieldBasedFrameDecoder(64 * 1024, 0, 4)
,它工作得很好,但是当接收到整数(数据包的前 4 个字节,代表实际数据包的长度)时,什么也没有发生) 为负数或大于最大可能长度 64*1024
。
我希望 LengthFieldBasedFrameDecoder
在即将到来的数据包的大小大于 64 * 1024
或小于 1
我怎样才能做到这一点?
您需要编写自己的 LengthFieldBasedFrameDecoder
版本。也就是说,我们还可以添加一个受保护的方法,人们可以覆盖该方法来验证“已解析”的消息长度。这样,用户端的自定义将最少。
当 LengthFieldBasedFrameDecoder
发现负长度时,它会抛出 CorruptedFrameException
和相应的消息。此类异常应通过 ChannelEvent
传播到管道。所以你可以在处理程序中拦截和过滤异常。