SDL Net2 отсутствует TCP-пакеты - PullRequest
0 голосов
/ 08 марта 2011

Я использую SDL и Net2 lib для клиент-серверного приложения. Проблема, с которой я сталкиваюсь, заключается в том, что я не получаю все свои TCP-пакеты от моего клиента, если я не помещаю задержку перед отправкой каждого пакета от клиента.задержка я получаю только один пакет.

Ответы [ 3 ]

3 голосов
/ 08 марта 2011

TCP-соединение представляет собой поток байтов.Ваш клиент может отправить 20 пакетов по 5 байтов каждый, и сервер прочитает их как одну последовательность из 100 байтов.Вам нужно будет разделить данные самостоятельно.

0 голосов
/ 10 августа 2011

Хотя надежность не гарантируется, вы, скорее всего, захотите использовать UDP, а не TCP. Net2 отлично справляется с UDP. UDP на самом деле очень надежный. UDP ориентирован на сообщения. UDP-сообщения, как правило, отправляются быстро и проходят специальную обработку маршрутизаторами (не всегда хорошо :-). UDP часто используется в играх.

Кстати, если бы вы задали этот вопрос в списке рассылки SDL или отправили его мне напрямую, вы бы получили этот совет много месяцев назад.

Я написал Net2 и зависаю в списке SDL. Я не тусуюсь здесь, потому что это место - бесконечный приемник времени.

Боб Пендлтон

0 голосов
/ 08 марта 2011

Ну, вам не гарантировано (в обычных сокетах) принимать все пакеты одновременно, возможно, вам придется вызывать функцию приема более одного раза, чтобы получить все данные. Это, конечно, зависит от вашего определения «пакета», вы получаете все свои данные?

+ 1 эрик

...