首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加入轻量级IP (lwip)中不工作的igmp_group

加入轻量级IP (lwip)中不工作的igmp_group
EN

Stack Overflow用户
提问于 2014-04-24 12:04:59
回答 4查看 3.2K关注 0票数 5

我是lwip的新手,我想用lwip创建一个多播接收器。我的步骤如下: 1.启用LWIP_IGMP;2.在low_level_init()中设置NETIF_FLAG_IGMP;3.加入组播组,创建并绑定pcb;4. udp_connect到remote_ip (或组播IP地址?两者都尝试过,但都失败了)

加入组将返回成功,当程序执行此操作时,一切看起来都正常。但是组播接收器不工作,没有组播数据进入网络接口。看起来我并没有将我的接收器加入到igmp组中,尽管加入过程看起来很好。有人知道我错过了什么吗?

我在igmp_joingroup()中找到了"netif->igmp_mac_filter != NULL“,但是这个回调被设置为NULL并且没有实现。我是否需要自己实现它来设置MAC筛选器,或者可以将其保留为空?

非常感谢你的帮助!

瑞安

EN

回答 4

Stack Overflow用户

发布于 2014-04-25 06:53:48

当您加入多播组时,通常会调用netif->igmp_ MAC _filter回调来配置以太网控制器中的MAC过滤器,以接受具有与该组对应的多播MAC地址的数据包。因此,根据您使用的以太网硬件,您可能需要实现回调。

票数 3
EN

Stack Overflow用户

发布于 2014-05-12 05:44:10

硬件需要配置为接收组播MAC帧,否则它将简单地丢弃具有组播目的地址的所有帧。可能存在接受所有传入多播帧的选项。在low_level_init()中启用它,您应该能够看到传入的多播帧。你不需要实现任何过滤器。

票数 2
EN

Stack Overflow用户

发布于 2017-12-15 18:41:54

我也有同样的问题。我解决了这个问题,在MAC接口的init中删除了ETH组播帧过滤器。为了进行测试,您还可以将接口设置为混杂模式,检查是否接收到组播数据包,然后删除混杂模式,并根据需要设置适当的组播帧过滤模式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23259594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档