首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为Java中现有的二进制协议生成解析器

为Java中现有的二进制协议生成解析器
EN

Stack Overflow用户
提问于 2016-06-22 14:33:47
回答 1查看 862关注 0票数 3

我必须实现现有二进制协议的高性能Java客户端。我要用Netty。但是,由于协议是复杂的(包含许多字段的许多消息类型),我希望将netty代码从解析代码中分离出来,并从描述该协议的文档中以更高的抽象方式生成该协议的解析器。类似于谷歌在协议缓冲区中所做的事情。不幸的是,我似乎不能使用protobuf,因为我的协议采用了不同的二进制线格式。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-22 18:47:27

我自己还没试过,但我想你可能是在找java二进制块解析器

下面是一个正式的自述文件示例,它展示了如何使用高级DSL来解析TCP报头的结构:

代码语言:javascript
复制
final JBBPParser tcpParser = JBBPParser.prepare(
          "skip:34; // skip bytes till the frame\n"
          + "ushort SourcePort;"
          + "ushort DestinationPort;"
          + "int SequenceNumber;"
          + "int AcknowledgementNumber;"

          + "bit:1 NONCE;"
          + "bit:3 RESERVED;"
          + "bit:4 HLEN;"

          + "bit:1 FIN;"
          + "bit:1 SYN;"
          + "bit:1 RST;"
          + "bit:1 PSH;"
          + "bit:1 ACK;"
          + "bit:1 URG;"
          + "bit:1 ECNECHO;"
          + "bit:1 CWR;"

          + "ushort WindowSize;"
          + "ushort TCPCheckSum;"
          + "ushort UrgentPointer;"
          + "byte [$$-34-HLEN*4] Option;"
          + "byte [_] Data;"
  );

final JBBPFieldStruct result = pngParser.parse(tcpFrameStream);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37971163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档