2011-01-21 3 views
1

utilisant boost :: asio en C++, je suis en train de déterminer la meilleure façon de chiffrer les paquets dans mon programme. J'ai pensé à définir des paquets tout seul par numéro de type, chacun avec différentes tailles de paquets fixes. Le système lit l'en-tête (type et quantité d'entrées pour les listes de données) et crée la structure appropriée pour recevoir les données, puis il réagit en fonction des données reçues.efficaces types de paquets/protocole de transfert

Cependant, quand je regarde cette méthode, je me demande s'il y aurait un moyen plus simple d'y parvenir sans sacrifier l'efficacité.

Ces paquets doivent être envoyés entre les différentes applications TCP creux. Idéalement, je vise les deux applications en utilisant au minimum la bande passante et le processeur, tout en étant aussi simple à modifier que possible. Aucune suggestion?

+0

J'ai supprimé les balises 'packet' et' packets' et ajouté 'tcp'. –

Répondre

1

TCP utilise des flux de données, et non des paquets. Je suggère fortement de penser à votre transmission de données comme un flux de données au lieu de la séquence de paquets. Cela rendra plus facile l'abstraction dans votre code. Jetez un oeil à Boost.Serialization ou Google Protocol Buffers.

Boost.Asio a le cryptage SSL capabilities, il est trivial de chiffrer le flux de données. Il a également une example en utilisant la sérialisation.

0

Avez-vous envisagé google protobufs? Bien qu'il n'effectue pas le cryptage (vous devrez le faire vous-même), il fournit un moyen d'encoder les données structurées, ce qui vous permet de l'envoyer efficacement par câble. En outre, il existe de nombreuses liaisons de langage (C++, Java et Python).