我使用的是netty 3.4.5版本。当我从网络接收数据包时,帧的长度基于标题。即基于标头的Netty帧解码
header1 - >长度为70字节的数据。
header2 - >长度为140字节的数据。
header3 - >长28字节的数据。
我想在netty中使用lengthbasedframedecoder。请告诉我如何做到这一点。 也建议我,如果有任何其他方式来做到这一点。
谢谢
我使用的是netty 3.4.5版本。当我从网络接收数据包时,帧的长度基于标题。即基于标头的Netty帧解码
header1 - >长度为70字节的数据。
header2 - >长度为140字节的数据。
header3 - >长28字节的数据。
我想在netty中使用lengthbasedframedecoder。请告诉我如何做到这一点。 也建议我,如果有任何其他方式来做到这一点。
谢谢
如果header1
,header2
,header3
是具有相同的长度,可以通过覆盖在getUnadjustedFrameLength
在LengthFieldBasedFrameDecoder
这样做。
switch(buf.getUnsignedInt) { //get header here
case header1 : return 70;
case header2: return 140;
case header3: return 28;
}
我没有检查这段代码。你有没有检查过。 – shivadarshan 2014-09-06 08:10:46
它适合你吗? – shivadarshan 2014-09-06 08:11:23
实际上,如果'headerX'不是指示剩余字节的长度,那么这不是一个基于长度字段的帧。 – jilen 2014-09-04 07:10:47
@jilen请给出一个想法,以实现上述情况... – shivadarshan 2014-09-05 08:25:31
在阅读netty源代码后,我发现最简单的方法是重写'LengthFieldBasedFrameDecoder'中的'getUnadjustedFrameLength'方法(需要长度为'header1,header2,header3'相同) – jilen 2014-09-05 08:45:14