Appearance
分布式软总线
分布式软总线是鸿蒙分布式能力的底层核心,实现设备间自动发现与通信。
1. 分布式软总线概述
1.1 核心概念
分布式软总线 = 鸿蒙设备间的"虚拟总线"
功能:
├─ 设备自动发现
├─ 设备间通信(TCP/UDP/广播)
├─ 数据同步
├─ 服务发现
└─ 安全认证
特点:
├─ 多协议自适应(WiFi/蓝牙/NFC)
├─ 低延迟(毫秒级发现)
├─ 高安全(端到端加密)
└─ 无需手动配对(自动发现)1.2 网络架构
设备 A(手机) 设备 B(平板)
┌──────────────┐ ┌──────────────┐
│ 应用层 │ │ 应用层 │
│ KV-Store │◄── 数据同步 ──► │ KV-Store │
│ 分布式数据库 │◄── 数据同步 ──► │ 分布式数据库 │
│ 分布式相册 │◄── 共享 ──► │ 分布式相册 │
├──────────────┤ ├──────────────┤
│ 软总线层 │ │ 软总线层 │
│ 发现/连接/同步│ │ 发现/连接/同步│
├──────────────┤ ├──────────────┤
│ 协议层 │ │ 协议层 │
│ WiFi/蓝牙/NFC│ │ WiFi/蓝牙/NFC│
└──────────────┘ └──────────────┘
════════ 分布式软总线 ════════2. 设备发现
2.1 发现附近设备
typescript
import { deviceManager } from '@kit.DeviceManagerKit'
// 创建设备发现对象
let deviceFinder = deviceManager.createDeviceFinder()
// 发现策略
let strategy = {
networkTypes: [
deviceManager.NetworkType.WIFI,
deviceManager.NetworkType.BLUETOOTH
],
timeout: 30000 // 发现超时(毫秒)
}
// 开始发现
deviceFinder.on('deviceFound', (device: deviceManager.DeviceInfo) => {
console.log('发现设备:', device.deviceId, device.deviceName)
this.nearbyDevices.push(device)
})
deviceFinder.on('deviceLost', (device: deviceManager.DeviceInfo) => {
console.log('设备离线:', device.deviceId)
})
deviceFinder.on('findDeviceEnd', () => {
console.log('发现完成')
})
// 开始发现
deviceFinder.startDeviceDiscovery(strategy)
// 停止发现
deviceFinder.stopDeviceDiscovery()2.2 设备信息
typescript
interface DeviceInfo {
deviceId: string // 设备 ID
deviceName: string // 设备名称
deviceType: string // 设备类型(phone/tablet/...)
networkType: string // 网络类型
isOnline: boolean // 在线状态
capabilities: string[] // 支持的能力
securityLevel: number // 安全等级
}3. 设备间连接
3.1 建立连接
typescript
import { connection } from '@kit.NetworkKit'
// 连接到目标设备
let connectOption: connection.ConnectOption = {
deviceId: 'target_device_id',
networkType: connection.NetworkType.WIFI,
timeout: 5000
}
let channel = await connection.createChannel(connectOption)
channel.on('stateChange', (state: connection.ConnectState) => {
switch (state) {
case connection.ConnectState.CONNECTED:
console.log('连接成功')
break
case connection.ConnectState.DISCONNECTED:
console.log('连接断开')
break
}
})3.2 数据传输
typescript
// 发送数据
let data = new TextEncoder().encode('Hello from another device')
await channel.send(data)
// 接收数据
channel.on('message', (data: ArrayBuffer) => {
let message = new TextDecoder().decode(data)
console.log('收到:', message)
})4. 设备认证
4.1 安全认证流程
设备 A 设备 B
│ │
├── 发现设备 ──────────► │
│ │
├── 发起认证 ─────────► │
│ (挑战-应答) │
│ │
│◄── 认证结果 ──────────│
│ (成功/失败) │
│ │
├── 建立加密通道 ───────► │
│ │typescript
// 设备认证
let authResult = await deviceManager.authenticateDevice({
deviceId: 'target_device_id',
authType: deviceManager.AuthType.SECURE
})
if (authResult.success) {
console.log('设备认证通过')
// 建立连接
} else {
console.error('认证失败:', authResult.errorCode)
}5. 面试高频考点
Q1: 分布式软总线的作用?
回答:设备间自动发现、连接、通信的基础设施。支持 WiFi/蓝牙/NFC,多协议自适应,毫秒级发现。
Q2: 设备发现流程?
回答:创建 DeviceFinder → startDeviceDiscovery → 监听 deviceFound/deviceLost → stopDeviceDiscovery。
🐱 小猫提示:分布式软总线记住 "底层基础设施、自动发现、多协议、设备间通信"。这是鸿蒙分布式能力的根基。