【问题标题】:specification driven packet format parsing?规范驱动的数据包格式解析?
【发布时间】:2011-12-05 23:35:35
【问题描述】:

这可能是在黑暗中拍摄:我们有一个正在设计和不断变化的线包格式。是否有一种灵活的方法来指定和解析传入流而不是对其进行硬编码?最好与语言无关……但不一定如此。如果有充分的理由不这样做,也请赐教。

谢谢

奥利弗

【问题讨论】:

标签: java python networking


【解决方案1】:

有一个很棒的 Python 库,名为 Construct。这是迄今为止最简单的快速入门方法。

如果与语言无关更重要,您可以将有线协议限制为ASN.1 BER,因为通常可以找到任何语言的编码器/解码器库。例如,Java 中有CoDec,Python 中有PyASN1。警告:虽然功能强大,但 ASN 充满了由委员会设计的标准,并且很难开始使用它。 This site will help.

还有更新、更轻量级的 ASN.1 类方法,例如 Apache ThriftGoogle Protocol Buffers

【讨论】:

    【解决方案2】:

    Google 的 Protocol Buffers 可让您指定要发送的内容,然后它会为您生成解析和序列化代码。

    Thrift 类似,但也提供了 IPC 框架。它将解析和套接字的东西集成到一个包中。

    我没有经常使用这些库,但它们都有很好的文档记录,与语言无关,并且是在许可许可下发布的——我相信其中至少有一个适合您的应用程序。

    【讨论】:

      【解决方案3】:

      Erlang 和 Haskell 都具有出色的二进制模式匹配。但出于您的目的(假设您在 JVM 上)为什么不write the connector in Scala

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-22
        • 2021-10-22
        • 2023-01-14
        • 2020-04-10
        • 1970-01-01
        • 2016-10-31
        相关资源
        最近更新 更多