私は最近同様の質問をしようとしましたが、いくつかの答えの後で、それが正しい質問ではないことに気づきました。
SMPP(Short Message Peer-to-Peer Protocol [SMSメッセージに使用])などの既存のプロトコル、またはHOTLINEやC#を使用したIRCなどのさまざまなチャットプロトコルに基づいてネットワークパケットを生成および解析するためのガイドまたは一般的に受け入れられている方法はありますか。
答えの1つは、 GoogleProtocolBuffersと.NETバージョンについて言及しました。それを見て、両端(クライアントとサーバー)を制御できる場合、シリアル化が非常に役立つことに気付きました。プロトコル仕様に従うところ。
生成 過去に、ネットワークパケット/プロトコルの一部であるプロパティを持つクラスまたは構造を作成しました。
// 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つは、データをメモリストリームまたはバイトストリームに保存することを提案しました。これは、より良いアイデアのようです。
私のバイト配列メソッドは、クラスプロパティに従ってパケットデータをストリームに直接書き込むメソッドにネットワークストリームを渡すよりもおそらく遅いようです。ここで本当に大きなものを見逃していない限り、これはおそらく私がすることです。
解析解析 するときは、さまざまなcaseステートメントを使用して、さまざまなPDUをステップ実行し、適切なプロパティが設定されたNetworkObjectを生成して、適切と思われる方法で処理します。