【问题标题】:Netty Frame Decoding based on Header基于Header的Ne​​tty帧解码
【发布时间】: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.. 我认为这行得通..

标签: java netty hornetq


【解决方案1】:

如果header1header2header3 的长度相同,您可以像这样覆盖LengthFieldBasedFrameDecoder 中的getUnadjustedFrameLength

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

【讨论】:

  • 我没有检查这个代码。你检查了吗??
猜你喜欢
  • 2023-04-11
  • 2016-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 1970-01-01
  • 2016-03-05
相关资源
最近更新 更多