Каковы возможные ошибки передачи данных UDP? - PullRequest
3 голосов
/ 24 сентября 2011

мы собираемся разработать игру с поддержкой многопользовательского интернета.Поскольку это интерактивная игра, я знаю, что должен использовать UDP, чтобы уменьшить задержку соединения, но мне интересно, какие возможные ошибки могут возникнуть в пакете, доставленном с использованием соединения UDP?везде, где я смотрел, говорят, что UDP обеспечивает «доставку по максимуму», но никто не дает полного объяснения, что это значит.после прочтения какой-то статьи у меня остались два вопроса:

  1. Можно ли отправить пакет и получить его часть на другом конце соединения?
  2. если ваш ответдля первого вопроса верно, что будет со следующими пакетами?мне подождать остатка пакета или я могу предположить, что следующий пакет начнется с моего следующего recv вызова?

для нашей игры. Я думаю, нам нужно будет отправлять 4 пакета по 20 байт каждую секунду.

1 Ответ

2 голосов
/ 24 сентября 2011

Самое распространенное, что может произойти: одна сторона отправляет сообщение, а другая ничего не получает.

Можно ли отправить посылку и получить ее часть на другом конец соединения?

Не совсем, даже когда сообщение огромно и оно фрагментировано. В отличие от TCP, в UDP каждое сообщение является независимым. Вы либо получаете это полностью, либо вообще ничего.

Так что вы должны сделать это просто recvfrom вещей в цикле и обработать их. Очевидно, что вы должны сделать ваше приложение невосприимчивым к потере сообщений, чтобы отсутствующее сообщение не приводило к его падению.

...