spezifikationsgesteuertes Paketformatparsing?

8

Das könnte ein Schuss in die Dunkelheit sein: Wir haben ein Drahtpaketformat, das im Design und im Fluss ist. Gibt es eine flexible Möglichkeit, den eingehenden Stream zu spezifizieren und zu analysieren, anstatt ihn zu kodieren? Vorzugsweise sprachunabhängig ... aber nicht unbedingt so. Wenn es einen guten Grund gibt, das nicht zu tun, bitte erleuchte mich auch.

Danke

Oliver

    
Oliver 05.12.2011, 23:35
quelle

3 Antworten

4

Es gibt eine wunderbare Python-Bibliothek namens Construct . Dies ist bei weitem der einfachste Weg, um schnell loszulegen.

Wenn es wichtiger ist, sprachunabhängig zu sein, können Sie Ihr Drahtprotokoll auf ASN.1 BER beschränken, da Es ist normalerweise möglich, eine Encoder / Decoder-Bibliothek für diese in jeder Sprache zu finden. Zum Beispiel gibt es CoDec in Java und PyASN1 in Python. Achtung: ASN ist zwar leistungsstark, aber mit Design-by-Committee-Standards ausgestattet, und es ist sehr schwierig, damit anzufangen. Diese Website wird Ihnen helfen.

Es gibt auch neuere, leichtere ASN.1-ähnliche Ansätze wie Apache Thrift und Google-Protokollpuffer .

    
Francis Avila 05.12.2011, 23:45
quelle
1

Mit den Protokollspeichern von Google können Sie angeben, was Sie senden möchten, und dann den Code zum Parsen und Serialisieren für Sie erstellen .

Thrift ist ähnlich, bietet aber auch ein IPC-Framework. Es integriert die Parsing- und Socket-Komponenten in ein Paket.

Ich habe diese Bibliotheken nicht oft benutzt, aber beide sind gut dokumentiert, sprachenunabhängig und werden unter einer permissiven Lizenz veröffentlicht - ich bin sicher, dass mindestens einer von ihnen zu Ihrer Anwendung passen würde.

    
Lambda Fairy 05.12.2011 23:48
quelle
1

Erlang und Haskell haben beide hervorragende Leistungen binärer Mustervergleich. Aber für Ihre Zwecke (angesichts der Tatsache, dass Sie auf der JVM sind) warum nicht schreiben der Stecker in Scala ?

    
alphazero 06.12.2011 00:15
quelle

Tags und Links