Я создаю приложение сокет клиент / сервер. И я не могу решить эту проблему, возможно, из-за недостатка знаний по этому вопросу.
Клиент должен отправить ответ, чтобы продолжить общение:
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?
- Как обеспечить проверку этого ответа?