LWIP + ENC28J60 + 组播可以接收组播数据,不能发送组播数据,怎么回事?

嵌入式乌托邦 2016-01-20 12:58:32
最近需要用到组播,用的是LWIP + ENC28J60 。经过一番配置后,现在的情况是:可以接收到组播数据,但是发送组播数据,TCP/IP调试助手收不到组播数据,wireshark抓包也没发现发送的数据。
我的配置:
1.直接把ENC28J60的ERXFCON寄存器设置为0,可以接收所有数据包。
2.lwip的opt.h中设置LWIP_IGMP为1,开启组播
3.low_level_init函数中 netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP | NETIF_FLAG_IGMP;//添加IGMP
4.定时调用 igmp_tmr();
5.UDP初始化中添加
IP4_ADDR(&ipgroup, 230,0,0,11);//添加组播地址
igmp_joingroup(IP_ADDR_ANY,(struct ip_addr *)(&ipgroup));
udp_bind(udp_server_pcb,IP_ADDR_ANY,1177);
udp_bind(udp_server_pcb,&ipgroup,65000);
udp_recv(udp_server_pcb,udp_server_rev,NULL);//接收回调函数
6.发送组播数据用
udp_sendto(udp_server_pcb, p,(struct ip_addr *) (&ipgroup),65000);

有高手知道怎么回事吗?
...全文
1139 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
soldier1234 2016-10-18
  • 打赏
  • 举报
回复 1
只说定时调用igmp_tmr();没说在哪里调用,哎,现在问题就是板子发送组播,调试工具可以正常接收,调试工具发送的组播,板子接收不到,板子没有条用接收回调函数。不知道怎么搞
  • 打赏
  • 举报
回复
请问你这里的 igmp_tmr();是在哪里调用的?
嵌入式乌托邦 2016-01-20
  • 打赏
  • 举报
回复
知道了。第5步中改为udp_bind(udp_server_pcb,IP_ADDR_ANY,65000); 就可以了。Enjoy!

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧