• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 网络共享
2
3## 简介
4网络共享管理分享设备已有网络给其他连接设备,支持Wi-Fi热点共享、蓝牙共享和USB共享,同时提供网络共享状态、共享流量查询功能。
5
6> **说明:**
7> 为了保证应用的运行效率,大部分API调用都是异步的,对于异步调用的API均提供了callback和Promise两种方式,以下示例均采用callback函数,更多方式可以查阅[API参考](../reference/apis/js-apis-net-sharing.md)。
8
9## 基本概念
10-   WIFI共享:通过WIFI热点共享网络。
11-   蓝牙共享:通过蓝牙共享网络。
12-   USB共享:通过USB共享网络。
13
14## 约束
15-   开发语言:C++ JS
16-   系统:linux内核
17-   本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
18
19## 场景介绍
20网络共享的典型场景有:
21-   开启网络共享
22-   停止网络共享
23-   获取共享网络的数据流量
24
25以下分别介绍具体开发方式。
26## 接口说明
27完整的JS API说明以及实例代码请参考:[网络共享](../reference/apis/js-apis-net-sharing.md)。
28
29| 类型 | 接口 | 功能说明 |
30| ---- | ---- | ---- |
31| ohos.net.sharing | function isSharingSupported(callback: AsyncCallback\<boolean>): void; | 获取当前系统是否支持网络共享,使用callback方式作为异步方法 |
32| ohos.net.sharing | function isSharing(callback: AsyncCallback\<boolean>): void; | 获取当前共享状态,使用callback方式作为异步方法 |
33| ohos.net.sharing | function startSharing(type: SharingIfaceType, callback: AsyncCallback\<void>): void; | 开启共享,type为共享类型,目前支持Wifi热点、蓝牙、USB,使用callback方式作为异步方法 |
34| ohos.net.sharing | function stopSharing(type: SharingIfaceType, callback: AsyncCallback\<void>): void; | 停止指定类型共享,type为共享类型,包括Wifi热点、蓝牙、USB,使用callback方式作为异步方法 |
35| ohos.net.sharing | function getStatsRxBytes(callback: AsyncCallback\<number>): void; | 获取共享接收数据量,单位KB,使用callback方式作为异步方法 |
36| ohos.net.sharing | function getStatsTxBytes(callback: AsyncCallback\<number>): void; | 获取共享发送数据量,单位KB,使用callback方式作为异步方法 |
37| ohos.net.sharing | function getStatsTotalBytes(callback: AsyncCallback\<number>): void; | 获取共享总数据流量,单位KB,使用callback方式作为异步方法 |
38| ohos.net.sharing | function getSharingIfaces(state: SharingIfaceState, callback: AsyncCallback\<Array\<string>>): void; | 获取指定状态的网卡名称,state为状态,包括正在共享、可共享、共享错误,使用callback方式作为异步方法 |
39| ohos.net.sharing | function getSharingState(type: SharingIfaceType, callback: AsyncCallback\<SharingIfaceState>): void; | 获取指定类型共享状态,type为类型,目前支持Wifi热点、蓝牙、USB,使用callback方式作为异步方法 |
40| ohos.net.sharing | function getSharableRegexes(type: SharingIfaceType, callback: AsyncCallback\<Array\<string>>): void; | 获取与指定类型匹配的网卡正则表达式列表,type为类型,目前支持Wifi热点、蓝牙、USB,使用callback方式作为异步方法 |
41| ohos.net.sharing | function on(type: 'sharingStateChange', callback: Callback\<boolean>): void; | 注册共享状态改变监听,返回网络共享的状态。 |
42| ohos.net.sharing | function off(type: 'sharingStateChange', callback?: Callback\<boolean>): void; | 注销共享状态改变监听,返回网络共享的状态。 |
43| ohos.net.sharing | unction on(type: 'interfaceSharingStateChange', callback: Callback\<{ type: SharingIfaceType, iface: string, state: SharingIfaceState }>): void; | 注册指定网卡共享状态改变监听 |
44| ohos.net.sharing | function off(type: 'interfaceSharingStateChange', callback?: Callback\<{ type: SharingIfaceType, iface: string, state: SharingIfaceState }>): void; | 注销指定网卡共享状态改变监听 |
45| ohos.net.sharing | function on(type: 'sharingUpstreamChange', callback: Callback\<NetHandle>): void; | 注册上行网卡改变监听 |
46| ohos.net.sharing | function off(type: 'sharingUpstreamChange', callback?: Callback\<NetHandle>): void; | 注销上行网卡改变监听 |
47
48## 开启网络共享
49
501. 从@ohos.net.sharing中导入sharing命名空间。
512. 注册监听共享状态的改变。
523. 调用startSharing方法,来开启指定类型共享。
534. 接收到共享状态开启的回调,开启共享成功。
54
55```js
56   // 从@ohos.net.sharing中导入sharing命名空间
57   import sharing from '@ohos.net.sharing'
58
59   // 注册监听共享状态的改变
60   sharing.on('sharingStateChange', (error, data) => {
61       console.log(JSON.stringify(error));
62       console.log(JSON.stringify(data));
63   });
64
65   // 调用startSharing方法,来开启指定类型共享
66   sharing.startSharing(sharing.SharingIfaceType.SHARING_WIFI, (error) => {
67       console.log(JSON.stringify(error));
68   });
69```
70
71## 停止网络共享
72
73### 开发步骤
74
751. 从@ohos.net.sharing中导入sharing命名空间。
762. 注册监听共享状态的改变。
773. 调用stopSharing方法,来停止指定类型共享。
784. 接收到共享状态关闭的回调,停止共享成功。
79
80```js
81   // 从@ohos.net.sharing中导入sharing命名空间
82   import sharing from '@ohos.net.sharing'
83
84   // 注册监听共享状态的改变
85   sharing.on('sharingStateChange', (error, data) => {
86       console.log(JSON.stringify(error));
87       console.log(JSON.stringify(data));
88   });
89
90   // 调用stopSharing方法,来停止指定类型共享
91   sharing.stopSharing(sharing.SharingIfaceType.SHARING_WIFI, (error) => {
92       console.log(JSON.stringify(error));
93   });
94```
95
96## 获取共享网络的数据流量
97
98### 开发步骤
99
1001. 从@ohos.net.sharing中导入sharing命名空间。
1012. 调用startSharing方法,来开启指定类型共享。
1023. 调用getStatsTotalBytes方法,来获取共享网络数据量。
1034. 调用stopSharing方法,来停止指定类型共享,共享网络数据量清零。
104
105```js
106   // 从@ohos.net.sharing中导入sharing命名空间
107   import sharing from '@ohos.net.sharing'
108
109   // 调用startSharing方法,来开启指定类型共享
110   sharing.startSharing(sharing.SharingIfaceType.SHARING_WIFI, (error) => {
111       console.log(JSON.stringify(error));
112   });
113
114   // 调用getStatsTotalBytes方法,来获取共享网络数据量
115   sharing.getStatsTotalBytes((error, data) => {
116       console.log(JSON.stringify(error));
117       console.log(JSON.stringify(data));
118   });
119
120   // 调用stopSharing方法,来停止指定类型共享,共享网络数据量清零
121   sharing.stopSharing(sharing.SharingIfaceType.SHARING_WIFI, (error) => {
122       console.log(JSON.stringify(error));
123   });
124
125   // 再次调用getStatsTotalBytes方法,共享网络数据量已清零
126   sharing.getStatsTotalBytes((error, data) => {
127       console.log(JSON.stringify(error));
128       console.log(JSON.stringify(data));
129   });
130```
131