разбор формата пакета на основе спецификации? - PullRequest
8 голосов
/ 06 декабря 2011

это может выстрелить в темноте: у нас есть формат проводного пакета, который находится в разработке и в движении.Существует ли гибкий способ задания и анализа входящего потока вместо жесткого его кодирования?Желательно язык независимый ... но не обязательно так.Если есть веская причина не делать этого, пожалуйста, просветите меня.

Спасибо

Оливер

Ответы [ 3 ]

4 голосов
/ 06 декабря 2011

Существует замечательная библиотека Python, которая называется Construct .Это, безусловно, самый простой способ быстро начать работу.

Если важнее быть независимым от языка, вы можете ограничить свой протокол передачи до ASN.1 BER , поскольку это обычно возможнонайти библиотеку кодировщика / декодера для них на любом языке.Например, CoDec в Java и PyASN1 в Python.Предупреждение: несмотря на свою мощь, ASN обременен стандартами проектирования по комитетам, и в нем очень сложно начать работу. Этот сайт поможет.

Существуют также более новые, более легкие подходы, подобные ASN.1, такие как Apache Thrift и Буферы протокола Google .

1 голос
/ 06 декабря 2011

Erlang и Haskell оба имеют отличное двоичное сопоставление с образцом. Но для ваших целей (учитывая, что вы находитесь на JVM), почему бы не написать соединитель в Scala ?

1 голос
/ 06 декабря 2011

Google Протокол буфера позволяет вам указать, что вы хотите отправить, затем генерирует для вас код синтаксического анализа и сериализации.

Комиссионный аналогичен, но обеспечиваетструктура IPC также.Он объединяет разбор и сокеты в одном пакете.

Я не очень много использовал эти библиотеки, но обе они хорошо документированы, не зависят от языка и выпущены по разрешающей лицензии - я уверен, по крайней мере,один из них подойдет вашей заявке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...