如何在VxWorks 5.5中接收UDP组播
时间:2020-03-06 14:43:50 来源:igfitidea点击:
我无法在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 */
解决方案
我们是否在Join Joinsockopt()调用中检查返回值以确保它实际上成功?过去,我在VxWorks 5.5上遇到了一个具体问题,即我的多播联接在不应该出现的情况下失败了。我相信我们必须从WindRiver获得新的库来解决此问题。
编辑:我不知道有什么特定技巧可以使多播与VxWorks一起使用。它应该使用标准的BSD套接字操作。如果接口可以正确接收单播流量,并且网络分析仪(例如,Wireshark)显示正在发送多播JOIN,并且正确形成了入站多播数据包,则可能是驱动程序问题。过去,WindRiver的支持对我们解决此类问题非常有帮助。我不知道我们是否与他们签订了支持合同以获得该级别的帮助。