快捷搜索: 王者荣耀 脱发

鸿蒙设备发现模块对libcoap源码的修改分析

鸿蒙系统的软总线设备发现模块discovery模块是使用了coap协议,并且是基于libcoap开源库进行开发,具体使用的是libcoap2.0版本(目前libcoap已更新到3.0)。 使用coap协议主要是考虑到运行HarmonyOS的设备除了硬件性能较好的手机、电脑等设备,还有资源受限的物联网设备,这些设备的ram、rom相对较小。coap 协议支持轻量的可靠传输,比较适合资源受限的小型嵌入式设备使用。 discovery 的实现前提是确保发现端设备与接收端设备在同一个局域网内且能互相收到对方的报文。流程为以下三步:

  1. 发现端设备,使用 coap 协议在局域网内发送广播;
  2. 接收端设备使用 PublishService 接口发布服务,接收端收到广播后,发送coap 协议单播给发现端;
  3. 发现端设备收到回复单播报文,更新设备信息。 但是原生的libcoap不支持广播,所以要对其源码进行一些修改,使其可以支持广播。 鸿蒙libcoap源码仓库: 在代码主要使用一个宏来做分离:COAP_SUPPORT_SOCKET_BROADCAST
经验分享 程序员 微信小程序 职场和发展