Есть вполне работоспособный код синхронной отсылки и приема данных
// отправка запроса
var bytes = command.GetBytes();
socket.Send(bytes, bytes.Length, 0);
// приём ответа
var buffer = new byte[1024];
using (var stream = new MemoryStream())
{
do
{
int receivedBytes = socket.Receive(buffer, 0, buffer.Length, SocketFlags.None);
stream.Write(buffer, 0, receivedBytes);
} while (socket.Available > 0);
return Response.GetResponse(stream.ToArray());
}
Все хорошо работает, пока размер принимаемых данных не превышает размер буфера. После этого в некоторых случаях (в 80 процентов) происходит обрезка принимаемых данных на произвольную величину. Помогает вставка Thread.Sleep(1) после stream.Write(buffer, 0, receivedBytes);, но это не выход. К сожалению, сам не нашел решение, поэтому спрашиваю у общества. Помогите добрым советом, пожалуйста...