我在 VxWorks 5.5 下无法接收 UDP 多播。我加入了多播组:
setsockopt(soc, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *) &ipMreq, sizeof (ipMreq));
相邻 Windows 机器上的类似代码确实接收多播。我能够从 VxWorks 发送多播;ifShow() 表示接口支持多播;MCAST_ROUTING 在内核配置中启用,但仍无法接收多播。
编辑:我需要在 RealTek 以太网驱动器 RX 配置寄存器中设置一个位,以使多播能够传递到应用层。
#define RTL_RXCG_AM 0x04 /* Accept Multicast */