2014-09-04 65 views
0

我使用的是netty 3.4.5版本。当我从网络接收数据包时,帧的长度基于标题。即基于标头的Netty帧解码

header1 - >长度为70字节的数据。

header2 - >长度为140字节的数据。

header3 - >长28字节的数据。

我想在netty中使用lengthbasedframedecoder。请告诉我如何做到这一点。 也建议我,如果有任何其他方式来做到这一点。

谢谢

+0

实际上,如果'headerX'不是指示剩余字节的长度,那么这不是一个基于长度字段的帧。 – jilen 2014-09-04 07:10:47

+0

@jilen请给出一个想法,以实现上述情况... – shivadarshan 2014-09-05 08:25:31

+0

在阅读netty源代码后,我发现最简单的方法是重写'LengthFieldBasedFrameDecoder'中的'getUnadjustedFrameLength'方法(需要长度为'header1,header2,header3'相同) – jilen 2014-09-05 08:45:14

回答

0

如果header1header2header3是具有相同的长度,可以通过覆盖在getUnadjustedFrameLengthLengthFieldBasedFrameDecoder这样做。

switch(buf.getUnsignedInt) { //get header here 
    case header1 : return 70; 
    case header2: return 140; 
    case header3: return 28; 
} 
+0

我没有检查这段代码。你有没有检查过。 – shivadarshan 2014-09-06 08:10:46

+0

它适合你吗? – shivadarshan 2014-09-06 08:11:23