LINUX.ORG.RU

проблема с сокетами


0

0

На сервере выполняется пересылка большого массива информации в цикле пакетами по 4100 байт функцией send, на клиенте выполняется такой же цикл для приема поступающих пакетов. При выполнении тестовой пересылки первый пакет успешно доходит до клиента, а второй - только частично (вместо 4100 байт recv получает 4016). Следующая порция данных по размеру не равна оставшейся части второго пакета 4100-4016, а составляет порядка 500 байт (т.е по логике вещей содержит также начало 3-го пакета). Как добиться синхронизации в передачи пакетов, т.е. чтобы в буфере в каждый момент времени была информация только из одного пакета?

PS Используется TCP, так что не очень понятно, почему recv не дожидается получения всех 4100 байтов и заканчивает работу после получения 4016-ти.

anonymous

Никак - все работает правильно.

Регсепить ваши пакеты вам прийдетя в ручную. ТСP/IP - обеспечивает только гарантированную доставку.

А как сокеты пересылают данные и какими порциями это их проблемы.

Aleks_IZA
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.