鸿蒙通信softbus_lite组件分析

本文详细介绍了鸿蒙操作系统中的softbus_lite组件,包括其运行机理,如coap服务器、设备认证服务器和会话管理服务器的角色,以及对外提供的设备发现和数据传输接口。通过PublishService函数启动服务,设备可以使用标准方法进行发现和数据传输测试,验证通信通路的正确性。

概述

softbus_lite组件是在受限设备上提供数据传输服务,除此之外,还提供设备发现,设备认证,通信安全功能。

运行机理

内部结构

softbus_lite由coap服务器,消息队列处理线程,设备认证服务器,会话管理服务器四部分组成。其中coap服务器是UDP服务器,端口为5684,用于设备发现。消息队列用于内部消息传递,目前仅用在创建设备认证服务器和会话管理服务器上,不对外提供服务。设备认证服务器是TCP服务器,其端口不固定,用于设备认证,密钥协商。会话管理服务器是TCP服务器,其端口不固定,用于数据传输。
softbus_lite内部结构图

softbus_lite
Coap Server
消息队列处理线程
认证服务器
会话服务器
TCP
数据传输
TCP
设备认证
消息队列处理
UDP:5684
设备发现

softbus_lite支持网口和Wifi两种通信方式。

PublishService函数

PublishService函数的功能是创建coap服务器,消息队列处理线程,设备认证服务器,会话管理服务器,声明一个功能模块。只有调用了PublishService函数,softbus_lite才能向外提供服务。
PublishService函数处理流程如下。

PublishService
InitService
CoapInitDiscovery
CoapWifiEventThread
DoRegistService
写CoapHandleWifiEvent/1
DoRegistService
ConfigVal g_configItems[SOFTBUS_CONFIG_TYPE_MAX] = { CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_MAX_BYTES_NEW_LENGTH, g_tranConfig.maxBytesNewLen), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_MAX_MESSAGE_NEW_LENGTH, g_tranConfig.maxMessageNewLen), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_MAX_BYTES_LENGTH, g_tranConfig.maxBytesLen), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_MAX_MESSAGE_LENGTH, g_tranConfig.maxMessageLen), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_CONN_BR_MAX_DATA_LENGTH, g_config.connBrMaxDataLen), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_CONN_RFCOM_SEND_MAX_LEN, g_config.connRfcomSendMaxLen), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_CONN_BR_RECEIVE_MAX_LEN, g_config.connBrRecvMaxLen), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_CONN_TCP_MAX_LENGTH, g_config.connTcpMaxLen), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_CONN_TCP_MAX_CONN_NUM, g_config.connTcpMaxConnNum), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_CONN_TCP_TIME_OUT, g_config.connTcpTimeOut), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_MAX_NODE_STATE_CB_CNT, g_config.maxNodeStateCbCnt), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_MAX_LNN_CONNECTION_CNT, g_config.maxLnnConnCnt), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_LNN_SUPPORT_CAPABILITY, g_config.maxLnnSupportCap), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_AUTH_ABILITY_COLLECTION, g_config.authAbilityConn), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_ADAPTER_LOG_LEVEL, g_config.adapterLogLevel), CONFIGITME_INIT_BY_IDX(SOFTBUS_STR_STORAGE_DIRECTORY, g_config.storageDir), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_SUPPORT_TCP_PROXY, g_tranConfig.isSupportTcpProxy), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_LNN_UDID_INIT_DELAY_LEN, g_config.lnnUdidInitDelayLen), CONFIGITME_INIT_BY_IDX(SOFTBUS_STR_LNN_NET_IF_NAME, g_config.lnnNetIfName), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_LNN_MAX_CONCURRENT_NUM, g_config.lnnMaxConcurentNum), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_AUTH_MAX_BYTES_LENGTH, g_tranConfig.maxAuthBytesLen), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_AUTH_MAX_MESSAGE_LENGTH, g_tranConfig.maxAuthMessageLen), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_AUTO_NETWORKING_SWITCH, g_config.lnnAutoNetworkingSwitch), CONFIGITME_INIT_BY_IDX(SOFTBUS_BOOL_SUPPORT_TOPO, g_config.isSupportTopo), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_DISC_FREQ, g_discConfig.discFreq), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_PROXY_MAX_BYTES_LENGTH, g_tranConfig.maxProxyBytesLen), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_PROXY_MAX_MESSAGE_LENGTH, g_tranConfig.maxProxyMessageLen), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_LNN_SUPPORT_FEATURE, g_config.supportFeature), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_CONN_COC_MAX_DATA_LENGTH, g_config.connCocMaxDataLen), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_CONN_COC_SEND_MTU, g_config.connCocSendMtu), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_CONN_BLE_CLOSE_DELAY_TIME, g_config.connBleCloseDelayTime), CONFIGITME_INIT_BY_IDX(SOFTBUS_INT_BLE_MAC_AUTO_REFRESH_SWITCH, g_config.bleMacAutoRefreshSwitch), };
07-13
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值