对外接口层
接口目录结构总览1. 公共接口Common头文件: softbus_common.h | softbus_error_code.h常量定义常量值说明NETWORK_ID_BUF_LEN65网络ID长度UDID_BUF_LEN65UDID长度UUID_BUF_LEN65UUID长度BT_MAC_LEN18蓝牙MAC地址长度IP_STR_MAX_LEN46IP地址最大长度(支持IPv6)MAX_CAPABILITYDATA_LEN513能力数据最大长度DISC_MAX_CUST_DATA_LEN513发现自定义数据最大长度DISC_MAX_DEVICE_NAME_LEN65设备名最大长度DISC_MAX_DEVICE_ID_LEN96设备ID最大长度核心枚举类型枚举说明ConnectionAddrType连接地址类型 (WLAN/BR/BLE/ETH/SESSION/USB)BleProtocolTypeBLE协议类型 (GATT/COC)DiscoverMode发现模式 (PASSIVE0x55 / ACTIVE0xAA)ExchangeMedium传输介质 (AUTO/BLE/COAP/USB)ExchangeFreq交换频率 (LOW/MID/HIGH/SUPER_HIGH/EXTREME_HIGH)DataBitMap能力位图 (hicall/profile/castPlus/dvKit/ddmp等)DeviceType设备类型 (手机/平板/手表/TV/PC/音箱/车机等)StrategyForBleBLE策略 (抑制/恢复发现)核心结构体结构体说明ConnectionAddr设备连接地址(含BR/BLE/IP/Session地址联合体)PublishInfo服务发布信息(publishId/mode/medium/freq/capability等)SubscribeInfo服务订阅信息(subscribeId/mode/medium/freq/capability等)DeviceInfo发现设备信息(devId/devType/devName/addr/capability等)AuthHandle认证句柄(authId/type)错误码模块模块编号说明DISC_SUB_MODULE_CODE1发现模块CONN_SUB_MODULE_CODE2连接模块AUTH_SUB_MODULE_CODE3认证模块LNN_SUB_MODULE_CODE4组网模块TRANS_SUB_MODULE_CODE5传输模块IPCRPC_SUB_MODULE_CODE6IPC/RPC模块PUBLIC_SUB_MODULE_CODE10公共模块2. 发现接口Discovery头文件: softbus_bus_center.h (发现相关部分)注意dsoftbus 的发现接口与组网接口合并在softbus_bus_center.h中没有独立的发现头文件。发现相关函数函数说明int32_t PublishLNN(const char *pkgName, const PublishInfo *info, const IPublishCb *cb)发布服务同一局域网的设备可发现该服务int32_t StopPublishLNN(const char *pkgName, int32_t publishId)停止发布服务函数说明int32_t RefreshLNN(const char *pkgName, const SubscribeInfo *info, const IRefreshCallback *cb)订阅服务发现设备发布该服务的设备信息将被上报int32_t StopRefreshLNN(const char *pkgName, int32_t refreshId)停止订阅服务发现相关回调回调/结构体说明IPublishCb.OnPublishResult(int publishId, PublishResult reason)发布结果回调IRefreshCallback.OnDeviceFound(const DeviceInfo *device)发现设备回调IRefreshCallback.OnDiscoverResult(int32_t refreshId, RefreshResult reason)订阅结果回调PublishResult发布结果枚举 (SUCCESS/NOT_SUPPORT_MEDIUM/INTERNAL/UNKNOWN)RefreshResult订阅结果枚举 (SUCCESS/NOT_SUPPORT_MEDIUM/INTERNAL/UNKNOWN)发现流程发布端: PublishLNN() → IPublishCb.OnPublishResult() ↓ 订阅端: RefreshLNN() → IRefreshCallback.OnDeviceFound() → IRefreshCallback.OnDiscoverResult()3. 组网接口Networking / Bus Center头文件: softbus_bus_center.h (组网相关部分)组网核心函数函数说明int32_t JoinLNN(const char *pkgName, ConnectionAddr *target, OnJoinLNNResult cb, bool isForceJoin)加入局域网网络将当前设备加入指定设备所在的LNNint32_t LeaveLNN(const char *pkgName, const char *networkId, OnLeaveLNNResult cb)离开局域网网络节点状态监听函数说明int32_t RegNodeDeviceStateCb(const char *pkgName, INodeStateCb *callback)注册节点状态变化回调int32_t UnregNodeDeviceStateCb(INodeStateCb *callback)注销节点状态变化回调INodeStateCb 回调事件:事件掩码回调说明EVENT_NODE_STATE_ONLINE (0x1)onNodeOnline设备上线EVENT_NODE_STATE_OFFLINE (0x02)onNodeOffline设备下线EVENT_NODE_STATE_INFO_CHANGED (0x04)onNodeBasicInfoChanged设备信息变化EVENT_NODE_STATUS_CHANGED (0x08)onNodeStatusChanged运行状态变化EVENT_NODE_STATE_NETWORK_CHANGED (0x10)onLocalNetworkIdChanged本地网络ID变化EVENT_NODE_HICHAIN_PROOF_EXCEPTION (0x20)onHichainProofExceptionHichain证明异常-onNodeDeviceTrustedChange信任关系变化节点信息查询函数说明int32_t GetAllNodeDeviceInfo(const char *pkgName, NodeBasicInfo **info, int32_t *infoNum)获取所有在线设备基本信息void FreeNodeInfo(NodeBasicInfo *info)释放设备信息内存int32_t GetLocalNodeDeviceInfo(const char *pkgName, NodeBasicInfo *info)获取本设备基本信息int32_t GetNodeKeyInfo(const char *pkgName, const char *networkId, NodeDeviceInfoKey key, uint8_t *info, int32_t infoLen)获取指定设备关键信息int32_t SetNodeDataChangeFlag(const char *pkgName, const char *networkId, uint16_t dataChangeFlag)设置节点数据变化标志NodeDeviceInfoKey 枚举: UDID/UUID/MASTER_UDID/BR_MAC/IP_ADDRESS/DEV_NAME/NETWORK_CAPABILITY/NETWORK_TYPE/BLE_OFFLINE_CODE/NODE_ADDRESS/P2P_IP_ADDRESS/DEVICE_SECURITY_LEVEL/DEVICE_SCREEN_STATUS/STATIC_NETWORK_CAP时间同步函数说明int32_t StartTimeSync(const char *pkgName, const char *targetNetworkId, TimeSyncAccuracy accuracy, TimeSyncPeriod period, ITimeSyncCb *cb)启动时间同步int32_t StopTimeSync(const char *pkgName, const char *targetNetworkId)停止时间同步Meta Node 管理函数说明int32_t ActiveMetaNode(const char *pkgName, const MetaNodeConfigInfo *info, char *metaNodeId)激活元节点int32_t DeactiveMetaNode(const char *pkgName, const char *metaNodeId)去激活元节点int32_t GetAllMetaNodeInfo(const char *pkgName, MetaNodeInfo *infos, int32_t *infoNum)获取所有元节点信息心跳与辅助函数说明int32_t ShiftLNNGear(const char *pkgName, const char *callerId, const char *targetNetworkId, const GearMode *mode)修改心跳参数并触发临时心跳int32_t SetBleUuidLNN(uint16_t uuid)设置BLE UUIDint32_t SyncTrustedRelationShip(const char *pkgName, const char *msg, uint32_t msgLen)同步信任关系仅DM使用int32_t SetDisplayName(const char *pkgName, const char *nameData, uint32_t len)设置本地设备显示名4. 传输接口Transport4.1 Session 接口 (v1)头文件: session.h | trans_type.h会话管理函数说明int CreateSessionServer(const char *pkgName, const char *sessionName, const ISessionListener *listener)创建会话服务端最多32个int RemoveSessionServer(const char *pkgName, const char *sessionName)移除会话服务端int OpenSession(const char *mySessionName, const char *peerSessionName, const char *peerNetworkId, const char *groupId, const SessionAttribute* attr)打开会话异步void CloseSession(int sessionId)关闭会话数据发送函数说明int SendBytes(int sessionId, const void *data, unsigned int len)发送字节数据int SendMessage(int sessionId, const void *data, unsigned int len)发送消息int SendStream(int sessionId, const StreamData *data, const StreamData *ext, const StreamFrameInfo *param)发送流数据int SendFile(int sessionId, const char *sFileList[], const char *dFileList[], uint32_t fileCnt)发送文件会话信息查询函数说明int GetMySessionName(int sessionId, char *sessionName, unsigned int len)获取本端会话名int GetPeerSessionName(int sessionId, char *sessionName, unsigned int len)获取对端会话名int GetPeerDeviceId(int sessionId, char *networkId, unsigned int len)获取对端设备IDint GetSessionSide(int sessionId)获取会话角色(0服务端,1客户端)int GetSessionOption(int sessionId, SessionOption option, void* optionValue, uint32_t valueSize)获取会话选项文件监听函数说明int SetFileReceiveListener(const char *pkgName, const char *sessionName, const IFileReceiveListener *recvListener, const char *rootDir)设置文件接收监听int SetFileSendListener(const char *pkgName, const char *sessionName, const IFileSendListener *sendListener)设置文件发送监听核心回调结构体回调方法说明ISessionListenerOnSessionOpened会话打开OnSessionClosed会话关闭OnBytesReceived接收字节数据OnMessageReceived接收消息OnStreamReceived接收流数据OnQosEventQoS事件IFileReceiveListenerOnReceiveFileStarted/OnReceiveFileProcess/OnReceiveFileFinished/OnFileTransError文件接收回调IFileSendListenerOnSendFileProcess/OnSendFileFinished/OnFileTransError文件发送回调核心类型类型说明SessionTypeTYPE_MESSAGE / TYPE_BYTES / TYPE_FILE / TYPE_STREAMStreamTypeRAW_STREAM / COMMON_VIDEO_STREAM / COMMON_AUDIO_STREAM / VIDEO_SLICE_STREAMLinkTypeWIFI_5G / WIFI_2G / P2P / BR / BLE / COC / HML 等SessionAttribute会话属性(dataType/linkType/streamAttr/fastTransData)4.2 Socket 接口 (v2)头文件: socket.h | trans_type.hSocket 生命周期函数说明int32_t Socket(SocketInfo info)创建Socket最多15个int32_t Listen(int32_t socket, const QosTV qos[], uint32_t qosCount, const ISocketListener *listener)服务端监听int32_t Bind(int32_t socket, const QosTV qos[], uint32_t qosCount, const ISocketListener *listener)客户端绑定同步int32_t BindAsync(int32_t socket, const QosTV qos[], uint32_t qosCount, const ISocketListener *listener)客户端绑定异步void Shutdown(int32_t socket)关闭Socket数据发送函数说明int32_t SendBytes(int32_t socket, const void *data, uint32_t len)发送字节数据int32_t SendBytesAsync(int32_t socket, uint32_t dataSeq, const void *data, uint32_t len)异步发送字节数据int32_t SendMessage(int32_t socket, const void *data, uint32_t len)发送消息int32_t SendStream(int32_t socket, const StreamData *data, const StreamData *ext, const StreamFrameInfo *param)发送流数据int32_t SendFile(int32_t socket, const char *sFileList[], const char *dFileList[], uint32_t fileCnt)发送文件QoS函数说明int32_t EvaluateQos(const char *peerNetworkId, TransDataType dataType, const QosTV *qos, uint32_t qosCount)评估QoS质量核心回调结构体回调方法说明ISocketListenerOnBindSocket绑定成功OnShutdownSocket关闭OnBytes接收字节数据OnMessage接收消息OnStream接收流数据OnFile接收文件事件OnQosQoS状态变化OnError异步绑定错误OnNegotiate协商回调OnBytesSent数据发送完成核心类型类型说明TransDataTypeMESSAGE / BYTES / FILE / RAW_STREAM / VIDEO_STREAM / AUDIO_STREAM / SLICE_STREAM / RAW_STREAM_ENCRYPEDSocketInfoSocket描述(name/peerName/peerNetworkId/pkgName/dataType)QosTypeMIN_BW / MAX_LATENCY / MIN_LATENCY / RTT_LEVEL / MAX_BUFFER / MAX_IDLE_TIMEOUT / TRANS_RELIABILITY / TRANS_CONTINUOUS / REUSE_BEShutdownReasonUNKNOWN / LOCAL / PEER / LNN_CHANGED / CONN_CHANGED / TIMEOUT / SEND_FILE_ERR / RECV_FILE_ERR 等FileEvent文件事件(发送/接收进度、完成、错误、路径更新等)5. 内部接口Inner Kits5.1 内部认证会话接口头文件: inner_session.h函数说明int OpenAuthSession(const char *sessionName, const ConnectionAddr *addrInfo, int num, const char *mixAddr)打开身份认证会话void NotifyAuthSuccess(int sessionId)通知身份认证成功5.2 内部 Socket 扩展接口头文件: inner_socket.h函数说明int32_t GetMtuSize(int32_t socket, uint32_t *mtuSize)获取Socket最大传输单元int32_t DBinderGrantPermission(int32_t uid, int32_t pid, const char *socketName)授予Socket权限DBinderint32_t DBinderRemovePermission(const char *socketName)移除Socket权限int32_t DfsBind(int32_t socket, const ISocketListener *listener)DFS专用绑定int32_t SetSocketOpt(int32_t socket, OptLevel level, OptType optType, void *optValue, int32_t optValueSize)设置Socket选项int32_t GetSocketOpt(int32_t socket, OptLevel level, OptType optType, void *optValue, int32_t *optValueSize)获取Socket选项int32_t PrivilegeShutdown(uint64_t tokenId, int32_t pid, const char *peerNetworkId)特权关闭会话仅DMS可用int32_t RegisterRelationChecker(IFeatureAbilityRelationChecker *relationChecker)注册特性能力关系检查器5.3 分布式文件服务接口头文件: dfs_session.h函数说明int32_t GetSessionKey(int32_t sessionId, char *key, unsigned int len)获取会话密钥int32_t GetSessionHandle(int32_t sessionId, int *handle)获取会话句柄int32_t DisableSessionListener(int32_t sessionId)禁用会话监听5.4 BLE 测距接口头文件: ble_range.h函数说明int32_t RegBleRangeCb(const char *pkgName, IBleRangeCb *callback)注册BLE测距回调int32_t UnregBleRangeCb(const char *pkgName)注销BLE测距回调int32_t TriggerHbForMeasureDistance(const char *pkgName, const char *callerId, const HbMode *mode)触发心跳测量距离5.5 数据级别接口头文件: data_level.h函数说明int32_t RegDataLevelChangeCb(const char *pkgName, IDataLevelCb *callback)注册数据级别变化回调int32_t UnregDataLevelChangeCb(const char *pkgName)注销数据级别变化回调int32_t SetDataLevel(const DataLevel *dataLevel)设置分布式数据库数据级别接口层级关系总图

相关新闻

为什么越来越多的土木小哥提桶跑路转行网络安全

为什么越来越多的土木小哥提桶跑路转行网络安全

为什么越来越多的土木小哥提桶跑路转行网络安全 作为江湖盛传的天坑专业之一,土木工程一直以来和劝退两个字紧密相连。不论在什么平台,提到土木工程专业的前景和未来,土木前辈们一定会跳出来声泪俱下的哭诉,苦口婆心的劝阻&#x…

2026/7/15 23:28:19 阅读更多 →
1846_安全SPI:从协议演进到车规级安全通信的实践解析

1846_安全SPI:从协议演进到车规级安全通信的实践解析

1. SPI协议基础与汽车电子的挑战我第一次接触SPI协议是在2013年开发车载仪表盘项目时。当时需要驱动一块OLED屏幕,工程师递给我一份SPI接口文档说:"记住MOSI是主机输出从机输入,其他引脚按这个接就行"。这种简单粗暴的入门方式&…

2026/7/15 23:28:19 阅读更多 →
C++ String类手写实现:从深拷贝到动态内存管理的核心原理

C++ String类手写实现:从深拷贝到动态内存管理的核心原理

1. 项目概述:为什么我们要亲手实现一个String类?如果你正在学习C,尤其是从C语言转过来,那么“string类”绝对是你绕不开的一个坎。在C语言里,处理字符串是件挺麻烦的事,你得小心翼翼地操作字符数组&#xf…

2026/7/15 23:26:19 阅读更多 →

最新新闻

Azure Local离线部署之Fallback日志收集

Azure Local离线部署之Fallback日志收集

1. 适用场景 官方原文:"Use appliance fallback logging to collect and send logs to Microsoft when the Azure Local disconnected operations appliance virtual machine (VM) is down. Use this method if standard log collection cant start and you ne…

2026/7/16 0:30:33 阅读更多 →
告别网盘限速烦恼:LinkSwift直链下载助手完整使用指南

告别网盘限速烦恼:LinkSwift直链下载助手完整使用指南

告别网盘限速烦恼:LinkSwift直链下载助手完整使用指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…

2026/7/16 0:28:33 阅读更多 →
大模型赋能智慧政务:小白程序员必备的AI学习指南(收藏版)

大模型赋能智慧政务:小白程序员必备的AI学习指南(收藏版)

本文介绍了如何利用大语言模型技术构建政务AI智能体,解决政务服务中信息不对称、咨询效率低等问题。文章详细阐述了政务AI智能体的技术框架、应用场景及成效,包括智能问答、智能问数等典型应用,以及其在提升咨询响应效率和政府办公效率方面的…

2026/7/16 0:24:32 阅读更多 →
零代码搭建健康智能体|实测小艺开放平台,放弃Python本地网关

零代码搭建健康智能体|实测小艺开放平台,放弃Python本地网关

文章目录前言一、新建项目第一步:层层弹窗直接给我绕晕1.1 先分清智能体和Skill,别点错入口1.2 四种开发模式,好看的OpenClaw直接无缘1.3 单/多智能体选择,没必要强行堆复杂度二、基础信息填写:短短一句话,…

2026/7/16 0:24:32 阅读更多 →
深入理解 TIME_WAIT 状态:原理、影响与优化

深入理解 TIME_WAIT 状态:原理、影响与优化

1. 引言 在网络编程和系统调优中,TIME_WAIT 状态是一个常见但又容易被误解的概念。当 TCP 连接正常关闭时,主动关闭连接的一方会进入 TIME_WAIT 状态,并持续 2MSL(Maximum Segment Lifetime,最大报文段生存时间&#…

2026/7/16 0:24:32 阅读更多 →
网络安全到底学什么?一套系统化学习方案送给新手

网络安全到底学什么?一套系统化学习方案送给新手

怎么学好网络安全,网络安全应该学什么? 随着网络安全被列为国家安全战略的一部分,这个曾经细分的领域瞬间火热起来,目前只要是与互联网相关的企业也都加大了对网络安全的投入… 网络安全前景有多好? 在2021年3月颁布…

2026/7/16 0:22:32 阅读更多 →

日新闻

HarmonyOs应用《重要日》开发第6篇 - 数据持久化存储

HarmonyOs应用《重要日》开发第6篇 - 数据持久化存储

本篇深入剖析 ImportantDays 项目的数据持久化方案——基于 HarmonyOS ArkData 模块的 Preferences 轻量级存储,以及 PreferenceUtil 工具类的单例封装。一、HarmonyOS 数据存储方案对比 HarmonyOS 提供了多种数据存储方案:方案适用场景特点Preferences轻…

2026/7/16 0:08:27 阅读更多 →
Python实现跨境电商商品图批量翻译教程

Python实现跨境电商商品图批量翻译教程

一、问题引入做跨境电商的卖家朋友,你是否遇到过这样的困扰?每次上架新品到亚马逊、Shopee或Lazada等平台,都需要处理大量商品图片的多语言版本。比如上架200款衣服,每款需要翻译成英语、日语、韩语等5种语言,这意味着…

2026/7/16 0:08:27 阅读更多 →
鸿蒙 7 新特性实战①:从 0 到 1 掌握 @kit 标准导入规范

鸿蒙 7 新特性实战①:从 0 到 1 掌握 @kit 标准导入规范

从鸿蒙 7(HarmonyOS NEXT)开始,官方全面完成了从 ohos.* 零散模块到 kit.* 领域套件的体系重构。对开发者来说,第一道门槛不是 API 用法变化,而是统一的导入规范——旧体系默认导入、解构导入混用的混乱局面被彻底终结…

2026/7/16 0:10:29 阅读更多 →

周新闻

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨 在一个阳光明媚的上午,互联网大厂的面试官坐在桌前,准备迎接他的面试候选人——燕双非,一个以搞笑和幽默著称的程序员。第一轮提问 面试官:燕双非,作…

2026/7/15 21:09:01 阅读更多 →
车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估在智能驾驶和车联网技术快速发展的今天,车载以太网作为新一代车载网络的核心传输技术,其物理层性能直接决定了数据传输的可靠性和稳定性。1000BASE-T1作为当前主流的…

2026/7/15 19:42:20 阅读更多 →
VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战指南嵌入式开发领域正经历一场工具链的静默革命。当传统Keil用户首次打开VSCode的扩展市场搜索EIDE时,往往会惊讶于这个看似简单的插件竟能重构十余年的开发习惯。本文将揭示如何用五个精准步骤&#xff0…

2026/7/15 17:52:08 阅读更多 →

月新闻