Как получить многоадресную рассылку UDP в VxWorks 5.5

StackOverflow https://stackoverflow.com/questions/134284

  •  02-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

#define RTL_RXCG_AM           0x04      /* Accept Multicast */
Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top