Допустим, клиент отправляет что-то серверу, а сервер читает в цикле while или асинхронно (BeginRead/EndRead).
И вот 2 разные сообщения от клиента проходят без всякого промежутка.
То есть со стороны клиента это выглядит примерно так:
var tcp = new TcpClient(...);
...
var sr = tcp.GetStream();
sr.Write("{'json_example': 'Apple'}"); //первое сообщение
sr.Write("{'json_example': 'BananaAvocado'}"); //и прямо тотчас же второе
Собственно вопрос: как серверу определить, что закончилось одно сообщение и началось второе?
Решение пришло само собой: перед отправкой самих данных сперва отправлять длину этих самых данных, чтобы сервер знал сколько ему прочитать байт и после скольки байт начнется новый пакет.
Или еще проще: просто ввести фиксированный размер пакетов, скажем 1024 байта.
Но я, как обычно, всем недоволен и опять в своем решении вижу костыль.
Есть ли какой-то способ избежать этого "костыля"? Может в .NET уже есть готовая реализация такого класса? Или все нормально?