Вверх ↑
Ответов: 4630
Рейтинг: 749
#1: 2014-07-01 13:27:40 ЛС | профиль | цитата
Наверное. В любом случае, при реализации протокола передачи данных нужно предусмотреть возможность определения размера одного "сообщения". Просто потому, что протокол TCP гарантирует только обработку начала/заверешения соединения, порядок и целостность сетевых пакетов. А вот чтобы на один метод doSend получить одно событие onReceive - на это расчитывать не стоит: данные, отправляемые по doSend, разбиваются на порции, по которым происходит событие onReceive, причем последняя часть предыдущего doSend вполне может приклеится к первой следующего doSend и выдастся вместе событием onReceive.

Поэтому в протоколе верхнего уровня нужно предусмотреть отправку длины "сообщения" (либо разделителей, а обычно и того и другого), а в принимающей стороне делать накопление данных с события onReceive и разделять сообщения по полю длины либо по разделителях.
карма: 26

0