【问题标题】:How to receive UDP Multicast in VxWorks 5.5如何在 VxWorks 5.5 中接收 UDP 组播
【发布时间】:2010-09-13 03:40:56
【问题描述】:

我在 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 */

【问题讨论】:

    标签: sockets vxworks


    【解决方案1】:

    您是否正在检查 Join setsockopt() 调用的返回值以确保它确实成功了?过去,我在使用 VxWorks 5.5 时遇到了一个特定问题,即我的多播连接在不应该出现的情况下失败了。我相信我们必须从 WindRiver 获得新的库来解决这个问题。

    编辑: 我没有意识到让多播与 VxWorks 一起工作的特定技巧。它应该使用标准的 BSD 套接字操作。如果接口可以正确接收单播流量,并且网络分析器(例如 Wireshark)显示正在发送多播 JOIN 并且正确形成了入站多播数据包,那么我怀疑是驱动程序问题。过去,WindRiver 支持对我们解决这些问题非常有帮助;我不知道您是否与他们签订了支持合同以获得该级别的帮助。

    【讨论】:

    • 是的,setsockopt() 返回 NO_ERROR。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多