搜索
bottom↓
回复: 3

使用LWIP netconn API建立组播通信,收不到数据

[复制链接]

出0入0汤圆

发表于 2016-4-7 16:02:14 | 显示全部楼层 |阅读模式
使用了RT-Thread操作系统。定义了RT_LWIP_IGMP,并且将LWIP_IGMP的值定义为1.
然后根据这个贴子http://lists.gnu.org/archive/htm ... 10-07/msg00100.html作者的代码。

IP4_ADDR(&ipMultiCast, 224, 0, 0, 0);

udp_conn = netconn_new(NETCONN_UDP);

netconn_bind(udp_conn, &ipMultiCast, 5004);
                               
netconn_join_leave_group(udp_conn,&ipMultiCast,IP_ADDR_ANY,NETCONN_JOIN);

netconn_recv(udp_conn, &inbuf);

然后我用VLC UDP组播向IP为224.0.0.0 端口5004发送UDP包,板子无法接收到数据。
我看上述帖子中收不到包的原因是netconn_join_leave_group返回-9 (ERR_VAL)。但我的netconn_join_leave_group返回值是0,那应该是加入组成功了吧。为何会收不到数据,是不是我lwip初始化过程中少了什么?求做过组播的高手指点一下,给点参考程序和文档也行,组播相关的好难找。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2016-4-7 16:26:32 | 显示全部楼层
lwip这个协议没有研究过,

出0入0汤圆

 楼主| 发表于 2016-4-8 10:06:10 | 显示全部楼层
已经成功收到组播数据了。网上相关资料比较少,我把我的方法分享给大家。
1.首先1楼所写的代码没有任何问题,一定要确保netconn_join_leave_group返回值为0,保证成功加入组。
2.若返回值不为0,查看NETIF_FLAG_IGMP该项是否定义,NETIF_FLAG_IGMP在netif.h中#define NETIF_FLAG_IGMP         0x80U
3.说上述步骤没有问题却依然收不到数据,查看ethernet.c文件中rt_stm32_eth_init函数。其中有定义组播屏蔽
ETH_InitStructure.ETH_MulticastFramesFilter = ETH_MulticastFramesFilter_Perfect;
这是完全屏蔽,就是因为这个,我收不到组播数据。将其改为ETH_MulticastFramesFilter_None不屏蔽,这样就收到组播数据了。
以上便是我调通组播的步骤,希望能帮到做组播的朋友。

出0入0汤圆

发表于 2016-4-8 10:11:04 | 显示全部楼层
tyj07 发表于 2016-4-8 10:06
已经成功收到组播数据了。网上相关资料比较少,我把我的方法分享给大家。
1.首先1楼所写的代码没有任何问题 ...

当时忘了怎么调试的了。

不过调试LWIP就是 心中有OSI的7层协议之后,一层一层的查,看数据包停在哪一层了。

以前调试IPv6,配置MAC芯片的时候要打开一个寄存器的值,也是逐层才找到问题
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-28 09:03

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表