Пакеты Winsock TCP отправлены, но не достигают хоста - PullRequest
0 голосов
/ 09 апреля 2011

Когда сервер отправляет 4 или более - 25-байтовые пакеты клиенту, только первые 2 обрабатываются клиентом. Я использую Event select на клиенте и отправляю на сервер. Нет ошибок, но отображаются только первые 2 пакета. Заранее спасибо.

1 Ответ

3 голосов
/ 11 апреля 2011

Не глядя на ваш код, я могу вспомнить только одну проблему, которую вы можете не заметить,

Возможно, вы упускаете момент, когда TCP является потоковым протоколом. Если вы отправляете данные, вызывая функцию отправки 10 раз от клиента, то необязательно, чтобы вам приходилось вызывать функцию приема 10 раз на стороне получателя. Все данные могут быть получены в 1 прием или 5 или 8 или 12 приемов. Я имею в виду, не пытайтесь смотреть на это в виде пакетов. Вы должны сделать Framing себя, чтобы идентифицировать пакеты.

При отправке 4 пакетов по 25 байт каждый. Всего 100 байт данных. На принимающей стороне вы можете получать 2 пакета по 50 байт, и вам придется идентифицировать свои пакеты самостоятельно, используя некоторые начальные и конечные маркеры и т. Д. *

Вы также можете получить один пакет из 100 байтов или 10 пакетов по 10 байтов. имейте это в виду.

...