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
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 .
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.
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 ?
Tags und Links python java networking