2009-08-25 4 views
1

最近私はsimilar questionと尋ねてみましたが、いくつかの回答の後で、私はそれが正しいことではないことを認識しました。ベストプラクティス:C#で既知のプロトコルのネットワークパケットを生成し、解析する?

SMPP(ショートメッセージピアツーピアプロトコル[SMSメッセージで使用])やHOTLINEやIRCなどのさまざまなチャットプロトコルのような既存のプロトコルに基づいてネットワークパケットを生成し、解析するためのガイドまたは一般的に認められている方法がありますか? C#で。

答えの1つは、Google Protocol Buffers.NET versionです。あなたが両端(クライアントとサーバー)を制御できるなら、シリアライゼーションが非常に便利であることに気がつきました。私はプロトコル仕様に従っています。

// PSEUDO CODE 
class NetworkObject 
{ 
    private int length; 
    private string data; 

    // ... 

    public byte[] GetBytes() 
    { 
     // Convert string and int to byte array 
     return byte array; 
    } 
} 

クラスは私がしたら呼び出すbyte[] GetBytes()方法があります:私は、ネットワークパケット/プロトコルの一部である特性を持つクラスまたは構造体を作ってきた過去に を生成

適切なプロパティを設定します。私はバイト配列を取って、それをネットワーク経由で送信します。私の以前の質問では、答えの1つは、メモリストリームやバイトストリームにデータを格納することを推奨しました。

私のバイト配列メソッドはおそらく、ストリームに直接クラスのプロパティに従ってパケットデータを書き込むメソッドにネットワークストリームを渡すよりも遅いようです。ここで本当に大きなものを見逃していない限り、おそらく私は何をしますか?パースは、私は、さまざまなPDUをステップスルーし、人口適切なプロパティとNetworkObjectを生成し、私は合うようそれを行うために、様々なケース文を使用する場合

を解析。

+0

本当にこの質問にはより良い回答が必要です。 ;) –

答えて

1

なぜオブジェクトの直列化を試してみませんか?

+0

Cで構造体を書くことができるようにオブジェクトをシリアル化できますか?オーバーヘッドがなく、バイトデータだけがありますか? –

関連する問題