2009-05-22 2 views
1

Эй, ребята, мне нужно, чтобы люди угадать решение :(.UDP Заблокировать?

Я использую UDP сокеты и то, что я делаю, посылая вход игрока, который составляет около 8, 4 или любой другой байт. Я использую recvfrom и SendTo. Это работает в течение нескольких минут, а затем случайным образом блокируется. Однако это может быть из-за моей логики приложения, но я хочу знать, есть ли у кого-нибудь опыт с этим, и это проблема UDP/Networking. Мой код здесь http://www.pastie.org/486583, но я в основном хочу знать то, что я могу смотреть на, чтобы исправить эту проблему, основываясь на своем опыте.

ответ

2

Использование Wireshark, чтобы выяснить, какая из сторон не удается.

ли т он отправитель не отправляет?

Или это приемник не получает?

0

Функция GetInput() ожидает, что sendTo и recvFrom всегда будут завершены? UDP не гарантирует отправку или получение ваших сообщений, или в каком порядке будут поступать сообщения. Я думаю, что ваши тайм-ауты также установлены на бесконечность, так что происходит время от времени, сообщение терпит неудачу, и вы ожидаете бесконечно для сообщения, которое уже потеряно.

+0

может ли он потеряться в локальной сети? мой маршрутизатор потрясающий. – 2009-05-22 18:34:46

+0

Не имеет значения, характер сетевого трафика и UDP - это то, что сообщения теряются. Физический провод между вашим компьютером и маршрутизатором приведет к потере сигнала. Попробуйте UDP сервер на полпути по всему миру, и вы увидите гораздо больше потери пакетов. TCP компенсирует и гарантирует доставку, если вы используете UDP, вам придется реализовать эти функции самостоятельно. – CookieOfFortune

0

Что означает «запирать»?

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

0

Что делает запертый средний и кто заперт. Вы не проверили возвращаемые значения «recvfrom» & «sendto» системные вызовы. Вы пытались запустить Wireshark, чтобы наблюдать за поведением.

Смежные вопросы