【发布时间】:2014-10-28 19:58:22
【问题描述】:
我使用的是 netty 3.4.5 版本。当我从网络接收数据包时,帧的长度基于标头。即
header1-->长度为 70 字节的数据。
header2-->长度为 140 字节的数据。
header3-->长度为 28 字节的数据。
我想在 netty 中使用 lengthbasedframedecoder。请建议我如何做到这一点。 如果有其他方法也可以建议我。
谢谢
【问题讨论】:
-
如果
headerX不表示剩余字节的长度,实际上这不是基于长度字段的帧。 -
@jilen 请给出实现上述场景的想法...
-
阅读netty源码后,我发现最简单的方法是覆盖
LengthFieldBasedFrameDecoder中的getUnadjustedFrameLength方法(即要求header1,header2,header3的长度相同) -
例如,如果您的标头是 4 字节 int,您可以将该方法重写为
switch(buf.getUnsignedInt) {case header1 : return 70; case header2: return 140;} -
谢谢 jilen.. 我认为这行得通..