私はクライアント/サーバーソケットアプリケーションを作成しています。おそらく問題に関する知識の不足のために、私はこの問題を解決することができません。ソケットクライアントの回答
クライアントが通信を続行するために答えを送信する必要があります:
while(comunicate)
{
if (chkCorrectAnswer.Checked)
answer = encoder.GetBytes('\x02' + "82SP|" + '\x03');
else
answer = encoder.GetBytes("bla");
ServerStream.Write(answer, 0, answer.Length);
//or ??
//tcp.Client.Send(answer);
}
、サーバはそれをrecieves:
while(comunicate)
{
var validanswer= encoder.GetBytes("myvalidanswer");
answer = new byte[validanswer.Length];
stream.Read(answer, 0, validanswer.Length);
//or ??
//tcp.Client.Receive(answer);
if (answer.SequenceEqual(validanswer))
// continue communication
}
各コードは異なるアプリである、「コミュスレッドを」ループ。
答えは正しく送信されているようですが、サーバーがうまく受信していないようです。時にはそれはblablabまたはlablablと7文字のバリエーションを受信します。私は受信すると、受信データだけでバッファが満たされ、何とか反復データでバッファが満たされます。ここ
つの質問:
- 私が使用する必要がありますどのような、stream.write /読み取りまたはclient.send /受け取りますか?
- この回答を確認するにはどうすればよいですか?
tcp.Client.Send(answer、answer.Length、SocketFlags.None)のようなものです。 2つの "送信"? – programad
ストリームに2回書き込みます.1つは(固定)長さで、もう1つはデータ付きです。 –