>Есть Сервер и Клиент на неблокирующих сокетах >Клиент: >... >send(sock, str1, len1, 0); >send(sock, str2, len2, 0); > >Сервер: >... >Sleep(5000); >read_data = recv(sock, str, BUF_SIZE, 0); > >При одновременном запуске, Сервер получит read_data==len1+len2 (если len1+len2<=FUB_SIZE), >а нужно чтобы read_data==len1; >Вобщем, чтобы пакеты не объединялись. Если это TCP то они могут не только объединяться, но и разъединяться на сегменты любой длины. Любой сильно интеллектуальный роутер (или стек ОСи) может склеить несколько пакетов в кучку или разбить один пакет на части. Это же поточный протокол, он не обязан согранять границы дейтаграмм. Если тебе не важна гарантия доставки, юзай UDP, он датаграмм-ориентированный. Или расширяй протокол передачи, чтобы каждому блоку данных соответствовал заголовок, в котором указана длина блока.
|