助けが必要です。C# TCPClient を使用した単純なサーバー クライアント アプリケーションがあります。
私が抱えている問題は、クライアントがサーバーにメッセージを送信すると、サーバーが数字を含む 4 バイトの応答を返すことです。
しかし、3 つまたは 4 つの応答ごとに、バイトは同じ間違った場所にあります。
例えば:
整数 243 を含むバイト配列を含むサーバー応答:
byte[0] => 243
byte[1] => 0
byte[2] => 0
byte[3] => 0
クライアントは次のように 4 バイトを受け取ります。
byte[0] => 0
byte[1] => 0
byte[2] => 243
byte[3] => 0
これは 243 ではなく 15925248 の整数です。
サーバー コードのスニペットを次に示します。クライアントがメッセージを送信すると、コードが実行されます。
byte[4] resp = new byte[4];
Buffer.BlockCopy(BitConverter.GetBytes(243), 0, resp, 0, 4);
clientStream.Write(resp, 0, resp.Length);
clientStream.Flush();
受信するクライアント コードのスニペットは次のとおりです。
Byte[] rec = new Byte[4] {0xx0, 0x00, 0x00, 0x00};
if (netStream.CanRead)
{
int numberOfBytesRead = 0;
do
{
numberOfBytesRead = netStream.Read(rec, 0, rec.Length);
} while (netStream.DataAvailable);
}
私は次のことを行いました: - サーバーが実際にバイト配列を正しく送信していることを確認しました。
ここで何が間違っているのかわかりません。または、私のコードにバグがあるかどうか。