0

独自のバイナリ プロトコルを介してデータを転送するために、 .NET Socket クラスを使用しています。通信全体は非同期です。

socket.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
        new AsyncCallback(ReadCallback), state); 

[...]

public static void ReadCallback(IAsyncResult ar) {
  StateObject so = (StateObject)ar.AsyncState;
  Socket s = so.workSocket; // my socket
  int rxBytesCnt = s.EndReceive(ar); // number of Bytes received
  so.buffer ... // processing data
}

通信は非同期であるため、同時に複数のメッセージを受け取ることがあります。そのため、メッセージの開始バイトとメッセージの終了バイトをデータストリームで検索する必要があります。

StringBuffer などのバッファとして使用できる .NET API のクラスはありますか? 1 つのメッセージを表すバイト数だけポップできるバイトのキューが必要です。または、カスタム実装が必要ですか? それは十分に速いですか?ThreadPool を使用して 2000 の TCP 接続を管理します。そのため、パフォーマンスが心配です。

事前にどうもありがとうございました!

4

0 に答える 0