8
votes

Spécification Format de paquets piloté Analysing?

Cela pourrait avoir un tir dans le noir: nous avons un format de paquet de fil qui est en conception et en flux. Existe-t-il un moyen flexible de spécifier et d'analyser le flux entrant au lieu de le mal à la codage? De préférence un langage agnostique ... mais pas nécessairement. S'il y a une bonne raison de ne pas le faire, s'il vous plaît vous éclairer aussi.

merci

Oliver


3 commentaires

Pour éviter d'assumer: besoin un format de paquet de fil personnalisé?


Dupliqué possible de Nommez-moi un analyseur binaire. Un analyseur pour les données binaires


@Inerdial: décision d'équipe, il est trop tard pour revenir à la planche à dessin maintenant.


3 Réponses :


4
votes

Il y a une merveilleuse bibliothèque Python appelée construire . C'est de loin le moyen le plus simple de commencer rapidement.

S'il est plus important d'être le langage agnostique, vous pouvez limiter votre protocole de fil à ASN.1 BER < / a>, car il est généralement possible de trouver une bibliothèque de codeur / décodeur pour ceux-ci dans une langue. Par exemple, il y a codec en java et pyasn1 en python. AVERTISSEMENT: Bien que puissant, l'ASN est chargé de la conception par le Comité, et il est très difficile de commencer. Ce site aidera.

Il existe également des approches plus récentes et plus légères ASN.1 telles que Apache Thrift et Buffs de protocole Google .


0 commentaires

1
votes

Google's Les tampons de protocole vous permettent de spécifier ce que vous voulez envoyer, puis il génère l'analyse. et code sériialisant pour vous.

tharift est similaire, mais fournit également un cadre IPC. Il intègre les trucs d'analyse et de panneaux dans un paquet.

Je n'ai pas beaucoup utilisé ces bibliothèques, mais les deux sont bien documentés, langues agnostiques et sont publiées sous une licence permissive - je suis sûr qu'au moins l'un d'entre eux conviendrait à votre application.


0 commentaires

1
votes

erlang et Haskell a tous deux une excellente correspondance de motifs binaires. Mais pour vos besoins (étant donné que vous êtes sur le JVM), pourquoi pas Écrivez le connecteur à Scala ?


0 commentaires