昨天刚调试了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 目标地址居然是固定的。
昨天刚调试了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 目标地址居然是固定的。
举报