Здравствуйте, AlexGin, Вы писали:
AG>При работе сессии — от сервера к клиенту может передаваться результат вычислений (пакет данных — сериализованных — размером до 10 KBytes). AG>Все остальные пакеты — относительно небольшие — от 10 байт до примерно 1...3 KByte. AG>Пакеты в 1...3 KByte — это JSON (они следуют от клиента к серверу). AG>Они определяют — что должен считать алгоритм бизнесс-логики на сервере.
Термин "пакет" в контексте разговоров о сети несколько перегружен. Я бы использовал "блок" или что-нибудь в этом роде.
AG>Тем не менее, исходный пакет вполне себе разбивается на небольшие фрагменты (что лично меня несколько удивило). AG>В общем — пришлось доработать так, чтобы была сборка пакета из фрагментов.
TCP, логически — это поток байтов. И когда ты отправляешь, скажем, 10 килобайт, то прийти они могут одним куском, а могут произвольным количеством кусков. Но в любом случае, они придут в том же порядке, в котором были отправлены.
Если тебе нужно, логически, пересылать данные блоками, с сохранением границ блоков, то надо предусмотреть какой-то свой механизм. Например, перед каждым блоком передается его длинна.