communication_softbus_lite

  • 1.鸿蒙分布式软总线概述
  • 2.文件结构MindMap
  • 3.重要功能和流程详解
  • 4.总结与分析

1.鸿蒙分布式软总线概述

1.1
总线是一种内部结构,在计算机系统中,主机的各个部件通过总线相连,外部设备通过相应的接口电路与总线连接,是计算机各个部件CPU,内存,输入输出设备传递信息的公共通路,总线可分为数据总线、地址总线和控制总线

1.2
鸿蒙的分布式软总线让多个设备互联融合,带来设备内和设备间的高吞吐,低延时的流畅通讯

1.3
鸿蒙分布式软总线致力于实现短距离内的设备统一的分布式通信能力,通过统一的设备发现服务和传输接口,实现数据和任务的高效传输和分配。

1.4
基于网络互联交互的系统,不同设备之间的传输协议和数据标准并不一致,而鸿蒙系统设定的分布式开发模式中,无需关心网络协议组网方式,仅需要监听设备上下线

1.5
采用异构网络组网的方式,解决不同设备之间不同协议交互的问题。具体步骤:设备上线向网络层注册---->网络层与设备建立通道连接---->监测设备的状态----->网络层对设备的上线下线进行管理----->上线的设备之间可以建立连接进行服务

1.6
提供统一的基于session的认证传输功能,通过sessionId实现数据的收发

1.7
COAP协议属于一种应用层协议,用于保持低开销的一个通用的WEB协议,用DTLS加密实现其安全性

1.8
由于各种设备的操作系统不尽相同,所以鸿蒙系统内部各个模块使用的函数需要支持针对不同版本平台的适配,针对不同的硬件设备,组成最适合该设备的OS,在源代码的解读过程中也能发现针对不同操作系统平台的条件编译的函数

1.9
设备的认证管理
两套通信的方法:
1 公钥协商会话密钥
2 使用会话密钥加密通信数据
当建立信任关系的主控设备与设备间在进行通信时,双方首先完成信任关系绑定,然后基于存储在本地的对端身份公钥相互进行认证;在每次通信时完成双向身份认证以及会话密钥协商,之后设备使用此会话密钥来解密双方设备间的传输通道

2.文件结构MindMap

思维导图疏导分布式软总线的文件架构

3.重要功能和流程详解

这里简单总结几个重要的分布式软总线中的功能实现

  1. int NSTACKX_Init()
    函数实现了coap发现服务的初始化,根据全局变量g_nstackxInitState的值判断初始化的状态
//初始化的三个状态:开始->进行中->完成
enum {NSTACKX_INIT_STATE_START = 0,NSTACKX_INIT_STATE_ONGOING,//1NSTACKX_INIT_STATE_DONE,//2
};

具体流程:首先判断初始化状态,为START时将其变为ONGOING然后执行两个初始化函数,初始化失败则调用初始化删除函数并返回EFAILED,并将全局变量变回START,初始化成功则将STATE改为DONE并返回EOK

2. int CoapInitDiscovery(void)
整个发现服务的初始化和各种线程建立和新设备接入时的数据接收与发送

整个流程在图中较为清晰的展现出来,这里再简单将流程总结一下:首先建立本设备的套接字,创建WiFi消息队列,用于接受WiFi相关信息,创建IP队列用于接收新接入设备的IP地址,然后建立一个消息线程创立监听线程调用线程处理函数在readSet中维护一个可用套接字的集合,然后为每个线程监听接受的数据,进行解码和保持并创建响应的UDP客户端进行数据的反馈

  1. int PublishService()
    所有服务的开启由服务发布函数开始

    整个分布式软总线的最初的发布服务的函数,这里简单概况一下整个流程:首先检查是否有调用软总线的权限,然后申请互斥锁开始对数据的修改,调用初始化服务函数将设备信息保存,开启WiFi监听并开启软总线工作,建立服务并启动多个线程同时工作,用于数据的收发,将相关信息保存入队列并进行登记,然后将发布模式的信息进行登记保存完成服务的发布

  2. WifiEventTrigger()

  3. BusManager()

  4. StartSession()

  5. StartListener()

4567对应的函数详细讲解放在前面的博客中,这里不赘述放上链接,感兴趣的小伙伴可以点击阅读
WifiEventTrigger()相关函数详细讲解

4.总结与分析

通过几天的源码阅读与理解,大致理清了鸿蒙分布式软总线模块的服务构建模式:
1.严密的安全认证,参数缺失和返回值的各种情况的处理都十分完备
2.通过层层封装函数对参数进行校验,对返回值进行校验,对不同的情况进行处理
3.针对不同的操作系统通过条件编译了不同的函数去适配其模式
4.四个模块彼此独立又彼此相连,为设备的连接与通信提供了底层功能支持
5.纯C语言编写,双向链表的使用,各种类库的使用和动态编译,都为其运行速度立下汗马功劳
6.大多数函数功能通过函数名就可得知,所有的变量命名和代码书写都符合规范,值得学习
7.通过多线程和互斥锁的调度,使得服务的高效运行,让多设备的通信更加高效

感谢阅读点赞和评论

分布式软总线模块总结相关推荐

  1. OpenHarmony分布式软总线与设备认证模块总结

    1 总结 此次OpenHarmony1.x源码分析涉及了分布式软总线(Lite版本).设备认证(Lite版本)两个较大模块. 分布式软总线模块的主要作用是为设备间提供通信能力,由于现有的通信方式差异很 ...

  2. 鸿蒙 OS 尖刀武器之分布式软总线技术全解析!

    作者 | 雷架 来源 | 爱笑的架构师(ID:DancingOnYourCode) 头图 |  CSDN 下载自东方IC 没有人能够熄灭满天星光 华为开发者大会2020在广东东莞松山湖欧洲小镇举办,在 ...

  3. 鸿蒙分布式软总线技术研究

    一.HarmonyOS概述 1.1系统定义 1.1.1 系统定位 HarmonyOS是一款"面向未来".面向全场景(移动办公.运动健康.社交通信.媒体娱乐等)的分布式操作系统.在传 ...

  4. 从IPC到分布式软总线的随笔

    在Linux 系统中, 客观来说,缺乏相对开发者比较友好的进程间通信框架.谈到Linux上进程间通信,一般都会想起管道(匿名.有名).信号/信号灯.共享内存.消息队列和socket.这些都是偏低层的技 ...

  5. 华为鸿蒙OS尖刀武器之分布式软总线技术

    本文 Github/javamap 已收录,有Java程序员进阶技术知识地图以及我的系列文章,欢迎大家Star. 目录 1 没有人能够熄灭满天星光 2 必须得补的传统总线知识 3 什么是分布式软总线? ...

  6. 一文带你看懂分布式软总线在家庭场景的应用

    HarmonyOS分布式操作系统定位为万物互联时代的操作系统,覆盖手机.平板.智慧屏.智能穿戴.智慧车机以及智能家居等内存从KB到GB级的多种终端,并在系统层让多终端融为一体,形成超级终端,为消费者带 ...

  7. HarmonyOS分布式软总线研究,【钟洪发老师公开课】实战学习HarmonyOS重点之分布式软总线...

    3月26号(周五)晚8点,我将给大家做一场直播<实战学习HarmonyOS重点之分布式软总线>. 从去年9月10号鸿蒙开源到现在,仅仅过去了短短半年的时间.学习鸿蒙的体验,是不断滴在刷新着 ...

  8. HarmonyOS最核心的“分布式软总线”技术解读

    文章来源 |  HarmonyOS开发者公众平台 什么是分布式软总线呢? 分布式软总线是HarmonyOS架构中最底层的技术 分布式软总线是HarmonyOS的大动脉 开发跨端应用,开发者们是否面临以 ...

  9. 【无标题】profinet输入输出式分布式IP67总线IO模块

    关键词:IP67总线模块.profinet以太网模块.总线分线盒 Profinet逐渐成为机械和设备工程之间的未来通信工具.Profinet以太网为基础,与传统现场总线系统相比通信速度明显加快,传输的 ...

最新文章

  1. Windows PE入门基础知识:Windows PE的作用、命名规则、启动方式、启动原理
  2. 如何使用SearchView过滤RecyclerView
  3. qq分享 设备未授权报错解决方案_金融行业思科设备典型网络故障案例:76系列典型案例(四)...
  4. 【配置】成本组件结构定义(OKTZ)
  5. 使用pip来安装pyOpenSSL
  6. Elastic-Job任务类
  7. python下载源_python解决使用镜像源来安装包
  8. 字典常用的方法(内建函数)
  9. java 使用适当的签名_关于数字签名和policy文件设置!
  10. 【数据结构与算法】图的邻接矩阵表示及其BFS、DFS的Java实现
  11. Weblogic 数据源及连接池配置问题Warning! Connectivity to backend database not verified
  12. spark mysql 写_Spark-SQL从MySQL中加载数据以及将数据写入到mysql中(Spark Shell方式,Spark SQL程序)...
  13. 利用多线程提高程序性能(for Android)
  14. Tyche 2147 旅行
  15. PIC单片机开发环境搭建
  16. 《零点起飞学C++》.(秦广军)
  17. idea导入Javaweb项目
  18. 3步教你学会cocos creator 物理引擎
  19. 热烈祝贺方正璞华两款产品入选2021年度江苏省工业软件优秀产品和应用解决方案拟推广名单
  20. strom 在linux下部署、基本命令

热门文章

  1. 扫码跳转微信网页 网络出错 轻触屏幕重新加载-1001
  2. 魅族路由器(极速版)刷老毛子(padavad)固件-全网最详细教程
  3. 《美通社头条》祝大家国庆节快乐!
  4. world分节及分节首页分节页码总页码设置方法
  5. 联想Thinkpad E470 笔记本 无声音解决方案
  6. 极客日报:iPhone13系列售价曝光:4535元起售;微信暂停个人帐号新用户注册;Android 12 Beta 3.1发布
  7. 夜神模拟器之burp抓包
  8. 对于业务中库存超卖测试
  9. 【机器学习基础】贝叶斯神经网络
  10. 微信公众平台 微接口 接口100 API100 接口大全(转) 开发微信功能简便了