WIZnet技术专区
直播中

lts

12年用户 8经验值
擅长:嵌入式技术
私信 关注
[技术问题讨论]

求大神解救,W5500使用UDP组播通信,为什么可以收,却发不出去的?

我已经正确的初始化了,使用官方的组播测试https://www.w5500.com/code/W5500EVB/UDPZUBO.html,但官方的测试方法有问题,因为这个测试工具本来发的时候就接收自身的数据,因此只验证了W5500可以接收组播,我反过来测试,就是W5500往组播发送数据,使用测试工具接收,实际上收不了数据,有大神!

回帖(6)

诸神Di黄昏

2019-9-11 17:04:31
https://w5500.com/code/W5500EVB/UDP.html
这个例程应该可以解决你说的问题
举报

杨磊

2019-9-23 14:47:54
我也遇到这个问题,w5500 可以接受组播,却发不出?求大神点播一下,谢谢
举报

杨磊

2019-9-23 14:48:26
楼上这个历程是UDP的.不是组播
举报

iiceal

2019-9-24 09:14:28
昨天刚调试了w5500 组播功能:
1、        目前环境下测试UDP 组播功能,需要在socket 之前 不仅仅需要提前设置组播地址和组播端口,还需要设置DHAR(目标mac 地址);
2、        Socket flag 需要设置为SF_IO_NONBLOCK |SF_MULTI_ENABLE,增加SF_IGMP_VER2 会调试不通;
3、        目前目标地址需要设置为DHAR[6]={0x01,0x00,0x5e,0x01,0x01,0x01};否则组播不同,猜测是跟测试工具有关。
4、        Sendto 跟的ip 地址和端口,可以组播地址的ip 和端口,也可以是组播成员的ip 和端口;如果是组播地址的ip 和端口,则组播所有成员都能收到该信息;如果是某个单独成员的ip 和端口,则只有该成员能收到该信息;sendto 如果跟的非组播成员ip 地址和port,该组信息无法发送出去;
5、        Recvfrom 能够收到非组播成员的其他UDP 用户信息,但是无法发送数据回去;
6、        根据w5500目标ip 和port 寄存器的特性(为一个ip 组 和一个port 号),所以一个w5500 socket 只能加入一个组播组;


现在在查socket 之前为什么要设置DHAR(目标mac 地址),而且该mac 目标地址居然是固定的。
举报

iiceal

2019-9-24 09:14:49
1、        目前环境下测试UDP 组播功能,需要在socket 之前 不仅仅需要提前设置组播地址和组播端口,还需要设置DHAR(目标mac 地址);
2、        Socket flag 需要设置为SF_IO_NONBLOCK |SF_MULTI_ENABLE,增加SF_IGMP_VER2 会调试不通;
3、        目前目标地址需要设置为DHAR[6]={0x01,0x00,0x5e,0x01,0x01,0x01};否则组播不同,猜测是跟测试工具有关。
4、        Sendto 跟的ip 地址和端口,可以组播地址的ip 和端口,也可以是组播成员的ip 和端口;如果是组播地址的ip 和端口,则组播所有成员都能收到该信息;如果是某个单独成员的ip 和端口,则只有该成员能收到该信息;sendto 如果跟的非组播成员ip 地址和port,该组信息无法发送出去;
5、        Recvfrom 能够收到非组播成员的其他UDP 用户信息,但是无法发送数据回去;
6、        根据w5500目标ip 和port 寄存器的特性(为一个ip 组 和一个port 号),所以一个w5500 socket 只能加入一个组播组;
举报

杨磊

2019-9-26 11:45:45
一定要保证mAC地址和组播IP符合协议规定才可以
举报

更多回帖

发帖
×
20
完善资料,
赚取积分