私はクライアントサーバーアプリケーションに取り組んでいます。
サーバーとクライアントの両方に TCPClient を使用します。
サーバーはリッスンして応答し、クライアントは送受信します。サーバーからの各応答には、異なるメッセージ長が含まれます。
クライアントには 2 つのリクエストがあります。1 つは ping 要求で、もう 1 つは送信データ要求です。
サーバーに 10 秒ごとに ping を実行するスレッドを作成しました。
ユーザーが送信ボタンを押すと、データ要求がクライアントによって送信されます。
サーバーは ping 要求に応答して、2 バイトをクライアントに送り返します。
サーバーは、8 バイトを送り返すことによって、データ要求に応答します。
これが私が遭遇している問題です。
ユーザーが送信ボタンを押すと同時に、ping スレッドが要求をサーバーに送信することがありました。
現在、データ リクエスト メソッドはソケットから読み取り、8 バイトを想定していますが、2 バイトしか取得していないため、長時間ハングします。
データ リクエスト メソッドのスニペットを次に示します。
byteBuffer = new byte[8];
remainingBytes = byteBuffer.Length;
numberOfBytesRead = netStream.Read(byteBuffer, index, remainingBytes);
ping スレッドのスニペットは次のとおりです。
byteBuffer = new byte[2];
remainingBytes = byteBuffer.Length;
numberOfBytesRead = netStream.Read(byteBuffer, index, remainingBytes);
クライアントがどの応答がどのメソッドに送られるかを知るにはどうすればよいですか?
ありがとう