新手上路
- 积分
- 35
- 金钱
- 35
- 注册时间
- 2015-4-21
- 在线时间
- 3 小时
|
5金钱
最近需要用到组播,用的是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);
有高手知道怎么回事吗?
|
最佳答案
查看完整内容[请看2#楼]
解决了。第5步中udp_bind(udp_server_pcb,&ipgroup,65000); 改为udp_bind(udp_server_pcb,IP_ADDR_ANY,65000); 就好了。详见我的博客:http://blog.csdn.net/lutao614/article/details/50548099
|