イベント駆動型の 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 バイトがないと、コールバックを呼び出すオプションが表示されません。何かが受信されるたびに呼び出されます-たとえそれがゼロバイトであっても。ただし、取引相手がメッセージをバイトごとに送信しない可能性があります。