嵌入式技术论坛
直播中

李刚

7年用户 1299经验值
私信 关注
[问答]

为什么RTThread的W5500不支持255.255.255.255的广播码呢?

ifconfig查看Flags没有BROADCAST的选项,不支持吗,还是有什么补丁文件。当执行setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &set, sizeof(int))就报错。

[E/wiz.socket] WIZnet setsockopt socket (0) not support option name : 32
msh />ifconfig
network interface device: W5500 (Default)
MTU: 1472
MAC: fe 51 34 45 20 4f
FLAGS: UP LINK_UP INTERNET_UP DHCP_ENABLE
ip address: 192.168.3.72
gw address: 192.168.3.1
net mask : 255.255.255.0
dns server #0: 192.168.3.1
dns server #1: 0.0.0.0

2.jpg

回帖(3)

陈伟

2023-2-2 16:00:36
w5500官方给的socket不是标准的BSD socket。
rt-thread再期上面封装了一层BSD socket,必然有很多功能w5500本身就不支持,以及没有封装实现的
就比如 SO_BROADCAST 选项,其实是可以封装进去的这个选项对w5500来说没有任何意义,只要判断不是tcp套接字就可以,建议可以看看源码w5500封装的BSD socket支持什么
w5500 你需要广播的话,不需要setsockopt,直接udp 255.255.255.255就行
举报

陈伟

2023-2-2 16:00:42
我最近在写w5500的驱动,原本想基于w5500实现一套标准的socket,而且跨平台。
但是越写越感觉不对劲,很多工具函数和结构体要跨平台就很多重复工作,在某些平台同时存在ipv6的还要考虑ipv6的问题。
而且一般使用w5500也是因为资源不够,资源不够的单片机一般也不会有很复杂的网络编程,封装一层后提高资源占用,可能也增加了使用者的心智负担。
唯一的好处就是不用使用者自己适配rtos了
举报

李刚

2023-2-2 16:00:56
w5500 使用的udp tcp,一般用到设备查找。至于ipv6,目前没那么紧迫
举报

更多回帖

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