イベント駆動型の Windows、C#、TCP クライアントが必要です。
読み取りバッファーに少なくとも 35 バイトがある場合、それらの 35 バイトを読み取り、その「パケット」から長さの値を取得し、その 2 番目の長さのデータに対してブロッキング読み取りを行うハンドラーを呼び出す必要があります。
BCL で使用できるイベントベースのソケット クラスはないと思いますが、単純な よりも少し高いレベルのものを探している場合はSocket、おそらく を調べる必要がありますTcpClient。StreamReader基になるストリームのバッファリングを処理し、などを介してアクセスできるようにします。
TcpClient client;
// ... construct, connect, etc ...
new StreamReader(client.GetStream());
回線ベースのプロトコルを使用している場合は、 を使用するだけで済みますがStreamReader.ReadLine()、StreamReader.Read()目的にも簡単に適合するはずです。
正しい方向に進むには、 と を確認してSocket.BeginReceive()くださいSocket.BeginSend()。
また、上記の関数の使用方法に関する Microsoft の便利な一連の例を次に示します。それは私がそれらを始めるのを助けました。
残念ながら、読み取りバッファーに少なくとも 35 バイトがないと、コールバックを呼び出すオプションが表示されません。何かが受信されるたびに呼び出されます-たとえそれがゼロバイトであっても。ただし、取引相手がメッセージをバイトごとに送信しない可能性があります。