В многопоточном tcp клиент - серверном приложении проскакивают битые сообщения
При многопоточной работе клиента и сервера через TpcClient и и записи данных через NetworkStream при работе в 100 потоком через ~ минут 30 или 1000 потоков и минут 10 после куче валидных сообщений проскакивает битое сообщение склееное из нескольких и между ними китайские иероглифы. На большом количестве потоков проверяю чтобы найти баги, этот баг не могу приложить ума как исправить, может есть какие то практики для работы TCP которые это решают эту проблему? Отправляю пакеты так:
byte[] data = Encoding.Unicode.GetBytes(sendData);
stream.Write(data, 0, data.Length);
Получаю так:
byte[] data = new byte[64];
int bytes;
do
{
bytes = stream.Read(data, 0, data.Length);
if (bytes != 0)
{
string receivingData = Encoding.Unicode.GetString(data, 0, bytes);
BufferReceiver.Append(receivingData);
}
}
while (stream.DataAvailable);
if (bytes == 0) break;
Источник: Stack Overflow на русском