2011-01-21 12 views
1

C++でboost :: asioを使用して、自分のプログラムでパケットを暗号化する最良の方法を判断しようとしています。私はタイプ番号ごとにパケットを個別に定義することを考えました。タイプ番号ごとに固定パケットサイズが異なります。システムはヘッダ(データのリストのタイプとエントリ数)を読み取り、データを受け取るための適切な構造を作成し、受信したデータに従って反応します。効率的なパケットタイプ/転送プロトコル

しかし、この方法を見ると、効率を犠牲にすることなくこれを達成する簡単な方法があるのだろうかと思います。

これらのパケットは、TCPを介して異なるアプリケーション間で送信されます。理想的には、可能な限り帯域幅とCPUを最小限に抑えながら、両方のアプリケーションを可能な限り簡単に変更することを目指しています。助言がありますか?

+0

私は 'packet'と' packets'タグを削除し、 'tcp'を追加しました。 –

答えて

1

TCPは、パケットではなく、データのを使用します。私は、あなたのデータ伝送を、パケットのシーケンスではなくデータのストリームとして考えることを強く勧めます。これにより、コードへの抽象化が容易になります。 Boost.SerializationまたはGoogle Protocol Buffersをご覧ください。

Boost.AsioにはSSL暗号化capabilitiesがありますので、データストリームを暗号化するのは簡単です。また、シリアル化を使用してexampleがあります。

0

google protobufsとお考えですか?実際には暗号化はしませんが(自分で行う必要があります)、構造化されたデータをコード化する方法を提供し、ワイヤで効率的に送ることができます。さらに、それには多くの言語バインディングがあります(C++、Java、Pythonが頭の上にあります)。

関連する問題