规范驱动的数据包格式解析?

时间:2011-12-05 23:35:35

标签: java python networking

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

由于

奥利弗

3 个答案:

答案 0 :(得分:4)

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

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

还有更新,更轻的类似ASN.1的方法,如Apache ThriftGoogle Protocol Buffers

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

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