Как получить UDP Multicast в VxWorks 5.5 - PullRequest
2 голосов
/ 25 сентября 2008

Мне не удалось получить многоадресную рассылку UDP под VxWorks 5.5. Я присоединился к многоадресной группе:

setsockopt(soc, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *) &ipMreq, sizeof (ipMreq));

Аналогичный код на соседней машине Windows получает многоадресную рассылку. Я могу отправить многоадресную рассылку из VxWorks; ifShow () указывает, что интерфейс поддерживает многоадресную рассылку; MCAST_ROUTING включен в конфигурации ядра, но все еще не может получать многоадресную рассылку.

Редактировать : Мне нужно было установить бит в регистре конфигурации RX привода RealTek Ethernet, чтобы обеспечить возможность многоадресной передачи на уровень приложений.

#define RTL_RXCG_AM           0x04      /* Accept Multicast */

1 Ответ

1 голос
/ 25 сентября 2008

Проверяете ли вы возвращаемое значение в вызове Join setsockopt (), чтобы убедиться, что он действительно успешен? В прошлом у меня была специфическая проблема с VxWorks 5.5, когда мои многоадресные соединения терпели неудачу, когда их не должно было быть. Я считаю, что нам нужно было получить новые библиотеки от WindRiver, чтобы решить эту проблему.

Редактировать: Нет конкретного трюка, о котором я знаю, чтобы заставить многоадресную рассылку работать с VxWorks. Следует использовать стандартные операции сокетов BSD. Если интерфейс может правильно принимать одноадресный трафик, и сетевой анализатор (например, Wireshark) показывает, что многоадресные соединения JOIN отправляются и входящие многоадресные пакеты формируются правильно, я бы заподозрил проблему с драйвером. Поддержка WindRiver была очень полезна для нас в прошлом с такими проблемами; Я не знаю, есть ли у вас контракт поддержки с ними, чтобы получить такой уровень помощи.

...