【发布时间】:2011-10-19 15:56:19
【问题描述】:
我正在创建一个客户端/服务器套接字应用程序。而且我无法解决这个问题,可能是因为缺乏这方面的知识。
客户端必须发送应答才能进行通信:
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);
}
服务器收到它:
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/read 还是 client.send/recieve?
- 如何保证这个答案的验证?
【问题讨论】: