с ошибкой recvfrom 11 - PullRequest
       13

с ошибкой recvfrom 11

2 голосов
/ 17 июля 2010

Я пробую программу udpclient, которая использует функции sendto и recvf .Я устанавливаю значение SO_RCVTIMEO как 10 секунд для моего сокета.

Я связываю сокет с исходным IP-адресом и исходным портом.Когда я проверяю netstat, я вижу, что нет другого процесса, связанного с такими же значениями.Моя операция связывания также прошла успешно.

Затем я выполняю sendto, который отправляет эхо-запрос к месту назначения.После sendto я делаю recvfrom.Но recvfrom из-за ошибки говорит ERRNO 11, что означает повторить попытку : (

Но если я проверю логи wireshark, я вижу ECHO REQUEST и ECHO REPLY, которые приходят в течение нескольких миллисекунд, но все еще recvfrom немогу прочитать :(. В wireshark я вижу UDP ECHO REQUEST и UDP ECHO REPLY.

У меня не включен ни один FIREWALL в моей системе.

Есть ли способ отладки этогоПроблема :( Я действительно сомневаюсь, что операция RECV есть ли способ узнать, отправляется ли пакет на мой sockFD или нет ???

UPDATE1: Мой компьютер с Linux подключендругому Linux-компьютеру, выполняющему роль сервера через коммутатор.

Ответы [ 2 ]

2 голосов
/ 21 июля 2010

Я обнаружил, что ISSUE atlast ...

Кажется, контрольная сумма UDP пакета неверна, в результате IP STACK отбрасывает пакет до того, как достигает SOCKET :( в результате recvfrom получает тайм-аути выходит.

0 голосов
/ 18 июля 2010

EAGAIN из recvfrom() подразумевает одно из трех:

  • Гнездо установлено на неблокирующее; или
  • Использовался флаг MSG_DONTWAIT; или
  • Время ожидания истекло.

Звучит так, будто твоя розетка неблокирующая для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...