我无法在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 */
答案 0 :(得分:1)
您是否正在检查Join setsockopt()调用的返回值以确定它实际上是否成功?我过去在VxWorks 5.5中遇到了一个特定的问题,即我的多播连接失败了。我相信我们必须从WindRiver获得新的库来解决这个问题。
编辑:我不知道如何让多播与VxWorks一起使用。它应该使用标准的BSD套接字操作。如果接口可以正确接收单播流量,并且网络分析器(例如,Wireshark)显示正在发送多播JOIN并且正确形成入站多播数据包,我将怀疑驱动程序问题。 WindRiver支持过去对我们这些问题非常有帮助;我不知道你是否与他们签订了支持合同以获得这种程度的帮助。