网络连接管理

2024-01-23 16:40 更新

网络连接管理提供管理网络一些基础能力,包括获取默认激活的数据网络、获取所有激活数据网络列表、开启关闭飞行模式、获取网络能力信息等功能。

说明

本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

  1. import connection from '@ohos.net.connection'

connection.createNetConnection

createNetConnection(netSpecifier?: NetSpecifier, timeout?: number): NetConnection

返回一个NetConnection对象,netSpecifier指定关注的网络的各项特征,timeout是超时时间(单位是毫秒),netSpecifier是timeout的必要条件,两者都没有则表示关注默认网络。

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

netSpecifier

NetSpecifier

指定网络的各项特征,不指定则关注默认网络。

timeout

number

获取netSpecifier指定的网络时的超时时间,仅netSpecifier存在时生效,undefined时默认值为0。

返回值:

类型

说明

NetConnection

所关注的网络的句柄。

示例:

  1. // 关注默认网络
  2. let netConnection = connection.createNetConnection()
  3. // 关注蜂窝网络
  4. let netConnectionCellular = connection.createNetConnection({
  5. netCapabilities: {
  6. bearerTypes: [connection.NetBearType.BEARER_CELLULAR]
  7. }
  8. })

connection.getDefaultNet

getDefaultNet(callback: AsyncCallback<NetHandle>): void

获取默认激活的数据网络,使用callback方式作为异步方法。可以使用getNetCapabilities去获取网络的类型、拥有的能力等信息。

需要权限:ohos.permission.GET_NETWORK_INFO

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

callback

AsyncCallback<NetHandle>

回调函数。当成功获取默认激活的数据网络时,err为undefined,data为默认激活的数据网络;否则为错误对象

错误码:

错误码ID

错误信息

201

Permission denied.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.getDefaultNet(function (error, data) {
  2. console.log(JSON.stringify(error))
  3. console.log(JSON.stringify(data))
  4. })

connection.getDefaultNet

getDefaultNet(): Promise<NetHandle>

获取默认激活的数据网络,使用Promise方式作为异步方法。可以使用getNetCapabilities去获取网络的类型、拥有的能力等信息。

需要权限:ohos.permission.GET_NETWORK_INFO

系统能力:SystemCapability.Communication.NetManager.Core

返回值:

类型

说明

Promise<NetHandle>

以Promise形式返回默认激活的数据网络。

错误码:

错误码ID

错误信息

201

Permission denied.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.getDefaultNet().then(function (data) {
  2. console.log(JSON.stringify(data))
  3. })

connection.getDefaultNetSync9+

getDefaultNetSync(): NetHandle

使用同步方法获取默认激活的数据网络。可以使用getNetCapabilities去获取网络的类型、拥有的能力等信息。

需要权限:ohos.permission.GET_NETWORK_INFO

系统能力:SystemCapability.Communication.NetManager.Core

返回值:

类型

说明

NetHandle

以同步方式返回默认激活的数据网络。

错误码:

错误码ID

错误信息

201

Permission denied.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. let netHandle = connection.getDefaultNetSync();

connection.getAppNet9+

getAppNet(callback: AsyncCallback<NetHandle>): void

获取App绑定的网络信息,使用callback方式作为异步方法。

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

callback

AsyncCallback<NetHandle>

回调函数。当成功获取App绑定的网络信息时,err为undefined,data为获取到App绑定的网络信息;否则为错误对象

错误码:

错误码ID

错误信息

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.getAppNet(function(error, data) {
  2. console.log(JSON.stringify(error))
  3. console.log(JSON.stringify(data))
  4. })

connection.getAppNet9+

getAppNet(): Promise<NetHandle>;

获取App绑定的网络信息,使用Promise方式作为异步方法。

系统能力:SystemCapability.Communication.NetManager.Core

返回值:

类型

说明

Promise<NetHandle>

以Promise形式返回App绑定的网络信息。

错误码:

错误码ID

错误信息

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.getAppNet().then((data) => {
  2. console.info(JSON.stringify(data));
  3. }).catch(error => {
  4. console.info(JSON.stringify(error));
  5. })

connection.SetAppNet9+

setAppNet(netHandle: NetHandle, callback: AsyncCallback<void>): void

绑定App到指定网络,绑定后的App只能通过指定网络访问外网,使用callback方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

netHandle

NetHandle

数据网络的句柄。

callback

AsyncCallback<void>

回调函数。当成功绑定App到指定网络时,err为undefined,否则为错误对象

错误码:

错误码ID

错误信息

201

Permission denied.

401

Parameter error.

2100001

Invalid parameter value.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.getDefaultNet(function (error, netHandle) {
  2. connection.setAppNet(netHandle, (error, data) => {
  3. console.log(JSON.stringify(error))
  4. console.log(JSON.stringify(data))
  5. });
  6. })

connection.SetAppNet9+

setAppNet(netHandle: NetHandle): Promise<void>;

绑定App到指定网络,绑定后的App只能通过指定网络访问外网,使用Promise方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

netHandle

NetHandle

数据网络的句柄。

返回值:

类型

说明

Promise<void>

无返回值的Promise对象。

错误码:

错误码ID

错误信息

201

Permission denied.

401

Parameter error.

2100001

Invalid parameter value.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.getDefaultNet().then(function (netHandle) {
  2. connection.setAppNet(netHandle).then((error, data) => {
  3. console.log(JSON.stringify(data))
  4. }).catch(error => {
  5. console.log(JSON.stringify(error))
  6. })
  7. })

connection.getAllNets

getAllNets(callback: AsyncCallback<Array<NetHandle>>): void

获取所有处于连接状态的网络列表,使用callback方式作为异步方法。

需要权限:ohos.permission.GET_NETWORK_INFO

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

callback

AsyncCallback<Array<NetHandle>>

回调函数。当成功获取所有处于连接状态的网络列表时,err为undefined,data为激活的数据网络列表;否则为错误对象

错误码:

错误码ID

错误信息

201

Permission denied.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.getAllNets(function (error, data) {
  2. console.log(JSON.stringify(error))
  3. console.log(JSON.stringify(data))
  4. });

connection.getAllNets

getAllNets(): Promise<Array<NetHandle>>

获取所有处于连接状态的网络列表,使用Promise方式作为异步方法。

需要权限:ohos.permission.GET_NETWORK_INFO

系统能力:SystemCapability.Communication.NetManager.Core

返回值:

类型

说明

Promise<Array<NetHandle>>

以Promise形式返回激活的数据网络列表。

错误码:

错误码ID

错误信息

201

Permission denied.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.getAllNets().then(function (data) {
  2. console.log(JSON.stringify(data))
  3. });

connection.getConnectionProperties

getConnectionProperties(netHandle: NetHandle, callback: AsyncCallback<ConnectionProperties>): void

获取netHandle对应的网络的连接信息,使用callback方式作为异步方法。

需要权限:ohos.permission.GET_NETWORK_INFO

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

netHandle

NetHandle

数据网络的句柄。

callback

AsyncCallback<ConnectionProperties>

回调函数。当成功获取netHandle对应的网络的连接信息时,err为undefined,data为获取的网络连接信息;否则为错误对象

错误码:

错误码ID

错误信息

201

Permission denied.

401

Parameter error.

2100001

Invalid parameter value.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.getDefaultNet().then(function (netHandle) {
  2. connection.getConnectionProperties(netHandle, function (error, data) {
  3. console.log(JSON.stringify(error))
  4. console.log(JSON.stringify(data))
  5. })
  6. })

connection.getConnectionProperties

getConnectionProperties(netHandle: NetHandle): Promise<ConnectionProperties>

获取netHandle对应的网络的连接信息,使用Promise方式作为异步方法。

需要权限:ohos.permission.GET_NETWORK_INFO

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

netHandle

NetHandle

数据网络的句柄。

返回值:

类型

说明

Promise<ConnectionProperties>

以Promise形式返回网络的连接信息。

错误码:

错误码ID

错误信息

201

Permission denied.

401

Parameter error.

2100001

Invalid parameter value.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.getDefaultNet().then(function (netHandle) {
  2. connection.getConnectionProperties(netHandle).then(function (data) {
  3. console.log(JSON.stringify(data))
  4. })
  5. })

connection.getNetCapabilities

getNetCapabilities(netHandle: NetHandle, callback: AsyncCallback<NetCapabilities>): void

获取netHandle对应的网络的能力信息,使用callback方式作为异步方法。

需要权限:ohos.permission.GET_NETWORK_INFO

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

netHandle

NetHandle

数据网络的句柄。

callback

AsyncCallback<NetCapabilities>

回调函数。当成功获取netHandle对应的网络的能力信息时,err为undefined,data为获取到的网络能力信息;否则为错误对象

错误码:

错误码ID

错误信息

201

Permission denied.

401

Parameter error.

2100001

Invalid parameter value.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.getDefaultNet().then(function (netHandle) {
  2. connection.getNetCapabilities(netHandle, function (error, data) {
  3. console.log(JSON.stringify(error))
  4. console.log(JSON.stringify(data))
  5. })
  6. })

connection.getNetCapabilities

getNetCapabilities(netHandle: NetHandle): Promise<NetCapabilities>

获取netHandle对应的网络的能力信息,使用Promise方式作为异步方法。

需要权限:ohos.permission.GET_NETWORK_INFO

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

netHandle

NetHandle

数据网络的句柄。

返回值:

类型

说明

Promise<NetCapabilities>

以Promise形式返回网络的能力信息。

错误码:

错误码ID

错误信息

201

Permission denied.

401

Parameter error.

2100001

Invalid parameter value.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.getDefaultNet().then(function (netHandle) {
  2. connection.getNetCapabilities(netHandle).then(function (data) {
  3. console.log(JSON.stringify(data))
  4. })
  5. })

connection.isDefaultNetMetered9+

isDefaultNetMetered(callback: AsyncCallback<boolean>): void

检查当前网络上的数据流量使用是否被计量,使用callback方式作为异步方法。

需要权限:ohos.permission.GET_NETWORK_INFO

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

callback

AsyncCallback<boolean>

回调函数。当前网络上的数据流量使用被计量返回true。

错误码:

错误码ID

错误信息

201

Permission denied.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.isDefaultNetMetered(function (error, data) {
  2. console.log(JSON.stringify(error))
  3. console.log('data: ' + data)
  4. })

connection.isDefaultNetMetered9+

isDefaultNetMetered(): Promise<boolean>

检查当前网络上的数据流量使用是否被计量,使用Promise方式作为异步方法。

需要权限:ohos.permission.GET_NETWORK_INFO

系统能力:SystemCapability.Communication.NetManager.Core

返回值:

类型

说明

Promise<boolean>

以Promise形式返回,当前网络上的数据流量使用被计量true。

错误码:

错误码ID

错误信息

201

Permission denied.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.isDefaultNetMetered().then(function (data) {
  2. console.log('data: ' + data)
  3. })

connection.hasDefaultNet

hasDefaultNet(callback: AsyncCallback<boolean>): void

检查默认数据网络是否被激活,使用callback方式作为异步方法。如果有默认数据网路,可以使用getDefaultNet去获取。

需要权限:ohos.permission.GET_NETWORK_INFO

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

callback

AsyncCallback<boolean>

回调函数。默认数据网络被激活返回true。

错误码:

错误码ID

错误信息

201

Permission denied.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.hasDefaultNet(function (error, data) {
  2. console.log(JSON.stringify(error))
  3. console.log('data: ' + data)
  4. })

connection.hasDefaultNet

hasDefaultNet(): Promise<boolean>

检查默认数据网络是否被激活,使用Promise方式作为异步方法。如果有默认数据网路,可以使用getDefaultNet去获取。

需要权限:ohos.permission.GET_NETWORK_INFO

系统能力:SystemCapability.Communication.NetManager.Core

返回值:

类型

说明

Promise<boolean>

以Promise形式返回,默认数据网络被激活返回true。

错误码:

错误码ID

错误信息

201

Permission denied.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.hasDefaultNet().then(function (data) {
  2. console.log('data: ' + data)
  3. })

connection.reportNetConnected

reportNetConnected(netHandle: NetHandle, callback: AsyncCallback<void>): void

向网络管理报告网络处于可用状态,调用此接口说明应用程序认为网络的可用性(ohos.net.connection.NetCap.NET_CAPABILITY_VAILDATED)与网络管理不一致。

使用callback方式作为异步方法。

需要权限:ohos.permission.GET_NETWORK_INFO 和 ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

netHandle

NetHandle

数据网络的句柄,参考NetHandle

callback

AsyncCallback<void>

回调函数。当向网络管理报告网络处于可用状态成功,err为undefined,否则为错误对象。

错误码:

错误码ID

错误信息

201

Permission denied.

401

Parameter error.

2100001

Invalid parameter value.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.getDefaultNet().then(function (netHandle) {
  2. connection.reportNetConnected(netHandle, function (error) {
  3. console.log(JSON.stringify(error))
  4. });
  5. });

connection.reportNetConnected

reportNetConnected(netHandle: NetHandle): Promise<void>

向网络管理报告网络处于可用状态,调用此接口说明应用程序认为网络的可用性(ohos.net.connection.NetCap.NET_CAPABILITY_VAILDATED)与网络管理不一致。

使用Promise方式作为异步方法。

需要权限:ohos.permission.GET_NETWORK_INFO 和 ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

netHandle

NetHandle

数据网络的句柄,参考NetHandle

返回值:

类型

说明

Promise<void>

无返回值的Promise对象。

错误码:

错误码ID

错误信息

201

Permission denied.

401

Parameter error.

2100001

Invalid parameter value.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.getDefaultNet().then(function (netHandle) {
  2. connection.reportNetConnected(netHandle).then(function () {
  3. console.log(`report success`)
  4. });
  5. });

connection.reportNetDisconnected

reportNetDisconnected(netHandle: NetHandle, callback: AsyncCallback<void>): void

向网络管理报告网络处于不可用状态,调用此接口说明应用程序认为网络的可用性(ohos.net.connection.NetCap.NET_CAPABILITY_VAILDATED)与网络管理不一致。

使用callback方式作为异步方法。

需要权限:ohos.permission.GET_NETWORK_INFO 和 ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

netHandle

NetHandle

数据网络的句柄,参考NetHandle

callback

AsyncCallback<void>

回调函数。当向网络管理报告网络处于不可用状态成功,err为undefined,否则为错误对象。

错误码:

错误码ID

错误信息

201

Permission denied.

401

Parameter error.

2100001

Invalid parameter value.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.getDefaultNet().then(function (netHandle) {
  2. connection.reportNetDisconnected(netHandle, function (error) {
  3. console.log(JSON.stringify(error))
  4. });
  5. });

connection.reportNetDisconnected

reportNetDisconnected(netHandle: NetHandle): Promise<void>

向网络管理报告网络处于不可用状态,调用此接口说明应用程序认为网络的可用性(ohos.net.connection.NetCap.NET_CAPABILITY_VAILDATED)与网络管理不一致。

使用Promise方式作为异步方法。

需要权限:ohos.permission.GET_NETWORK_INFO 和 ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

netHandle

NetHandle

数据网络的句柄,参考NetHandle

返回值:

类型

说明

Promise<void>

无返回值的Promise对象。

错误码:

错误码ID

错误信息

201

Permission denied.

401

Parameter error.

2100001

Invalid parameter value.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.getDefaultNet().then(function (netHandle) {
  2. connection.reportNetDisconnected(netHandle).then(function () {
  3. console.log(`report success`)
  4. });
  5. });

connection.getAddressesByName

getAddressesByName(host: string, callback: AsyncCallback<Array<NetAddress>>): void

使用默认网络解析主机名以获取所有IP地址,使用callback方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

host

string

需要解析的主机名。

callback

AsyncCallback<Array<NetAddress>>

回调函数。当使用默认网络解析主机名成功获取所有IP地址,err为undefined,data为获取到的所有IP地址;否则为错误对象。

错误码:

错误码ID

错误信息

201

Permission denied.

401

Parameter error.

2100001

Invalid parameter value.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. let host = "xxxx";
  2. connection.getAddressesByName(host, function (error, data) {
  3. console.log(JSON.stringify(error))
  4. console.log(JSON.stringify(data))
  5. })

connection.getAddressesByName

getAddressesByName(host: string): Promise<Array<NetAddress>>

使用默认网络解析主机名以获取所有IP地址,使用Promise方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

host

string

需要解析的主机名。

返回值:

类型

说明

Promise<Array<NetAddress>>

以Promise形式返回所有IP地址。

错误码:

错误码ID

错误信息

201

Permission denied.

401

Parameter error.

2100001

Invalid parameter value.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. let host = "xxxx";
  2. connection.getAddressesByName(host).then(function (data) {
  3. console.log(JSON.stringify(data))
  4. })

NetConnection

网络连接的句柄。

register

register(callback: AsyncCallback<void>): void

订阅指定网络状态变化的通知。

需要权限:ohos.permission.GET_NETWORK_INFO

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

callback

AsyncCallback<void>

回调函数。当订阅指定网络状态变化的通知成功,err为undefined,否则为错误对象。

错误码:

错误码ID

错误信息

201

Permission denied.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

2101008

The callback is not exists.

2101022

The number of requests exceeded the maximum.

示例:

  1. netConnection.register(function (error) {
  2. console.log(JSON.stringify(error))
  3. })

unregister

unregister(callback: AsyncCallback<void>): void

取消订阅默认网络状态变化的通知。

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

callback

AsyncCallback<void>

回调函数。当取消订阅指定网络状态变化的通知成功,err为undefined,否则为错误对象。

错误码:

错误码ID

错误信息

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

2101007

The same callback exists.

示例:

  1. netConnection.unregister(function (error) {
  2. console.log(JSON.stringify(error))
  3. })

on('netAvailable')

on(type: 'netAvailable', callback: Callback<NetHandle>): void

订阅网络可用事件。

模型约束:此接口调用之前需要先调用register接口,使用unregister取消订阅默认网络状态变化的通知。

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

type

string

订阅事件,固定为'netAvailable'。

netAvailable:数据网络可用事件。

callback

Callback<NetHandle>

回调函数,返回数据网络句柄。

示例:

  1. // 创建NetConnection对象
  2. let netCon = connection.createNetConnection()
  3. // 先使用register接口注册订阅事件
  4. netCon.register(function (error) {
  5. console.log(JSON.stringify(error))
  6. })
  7. // 订阅网络可用事件。调用register后,才能接收到此事件通知
  8. netCon.on('netAvailable', function (data) {
  9. console.log(JSON.stringify(data))
  10. })
  11. // 使用unregister接口取消订阅
  12. netCon.unregister(function (error) {
  13. console.log(JSON.stringify(error))
  14. })

on('netBlockStatusChange')

on(type: 'netBlockStatusChange', callback: Callback<{ netHandle: NetHandle, blocked: boolean }>): void

订阅网络阻塞状态事件,使用callback方式作为异步方法。

模型约束:此接口调用之前需要先调用register接口,使用unregister取消订阅默认网络状态变化的通知。

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

type

string

订阅事件,固定为'netBlockStatusChange'。

netBlockStatusChange:网络阻塞状态事件。

callback

Callback<{ netHandle: NetHandle, blocked: boolean }>

回调函数,返回数据网络句柄(netHandle),及网络堵塞状态(blocked)。

示例:

  1. // 创建NetConnection对象
  2. let netCon = connection.createNetConnection()
  3. // 先使用register接口注册订阅事件
  4. netCon.register(function (error) {
  5. console.log(JSON.stringify(error))
  6. })
  7. // 订阅网络阻塞状态事件。调用register后,才能接收到此事件通知
  8. netCon.on('netBlockStatusChange', function (data) {
  9. console.log(JSON.stringify(data))
  10. })
  11. // 使用unregister接口取消订阅
  12. netCon.unregister(function (error) {
  13. console.log(JSON.stringify(error))
  14. })

on('netCapabilitiesChange')

on(type: 'netCapabilitiesChange', callback: Callback<{ netHandle: NetHandle, netCap: NetCapabilities }>): void

订阅网络能力变化事件。

模型约束:此接口调用之前需要先调用register接口,使用unregister取消订阅默认网络状态变化的通知。

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

type

string

订阅事件,固定为'netCapabilitiesChange'。

netCapabilitiesChange:网络能力变化事件。

callback

Callback<{ netHandle: NetHandle, netCap: NetCapabilities }>

回调函数,返回数据网络句柄(netHandle)和网络的能力信息(netCap)。

示例:

  1. // 创建NetConnection对象
  2. let netCon = connection.createNetConnection()
  3. // 先使用register接口注册订阅事件
  4. netCon.register(function (error) {
  5. console.log(JSON.stringify(error))
  6. })
  7. // 订阅网络能力变化事件。调用register后,才能接收到此事件通知
  8. netCon.on('netCapabilitiesChange', function (data) {
  9. console.log(JSON.stringify(data))
  10. })
  11. // 使用unregister接口取消订阅
  12. netCon.unregister(function (error) {
  13. console.log(JSON.stringify(error))
  14. })

on('netConnectionPropertiesChange')

on(type: 'netConnectionPropertiesChange', callback: Callback<{ netHandle: NetHandle, connectionProperties: ConnectionProperties }>): void

订阅网络连接信息变化事件。

模型约束:此接口调用之前需要先调用register接口,使用unregister取消订阅默认网络状态变化的通知。

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

type

string

订阅事件,固定为'netConnectionPropertiesChange'。

netConnectionPropertiesChange:网络连接信息变化事件。

callback

Callback<{ netHandle: NetHandle, connectionProperties: ConnectionProperties }>

回调函数,返回数据网络句柄(netHandle)和网络的连接信息(connectionProperties)

示例:

  1. // 创建NetConnection对象
  2. let netCon = connection.createNetConnection()
  3. // 先使用register接口注册订阅事件
  4. netCon.register(function (error) {
  5. console.log(JSON.stringify(error))
  6. })
  7. // 订阅网络连接信息变化事件。调用register后,才能接收到此事件通知
  8. netCon.on('netConnectionPropertiesChange', function (data) {
  9. console.log(JSON.stringify(data))
  10. })
  11. // 使用unregister接口取消订阅
  12. netCon.unregister(function (error) {
  13. console.log(JSON.stringify(error))
  14. })

on('netLost')

on(type: 'netLost', callback: Callback<NetHandle>): void

订阅网络丢失事件。

模型约束:此接口调用之前需要先调用register接口,使用unregister取消订阅默认网络状态变化的通知。

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

type

string

订阅事件,固定为'netLost'。

netLost:网络严重中断或正常断开事件。

callback

Callback<NetHandle>

回调函数,数据网络句柄(netHandle)

示例:

  1. // 创建NetConnection对象
  2. let netCon = connection.createNetConnection()
  3. // 先使用register接口注册订阅事件
  4. netCon.register(function (error) {
  5. console.log(JSON.stringify(error))
  6. })
  7. // 订阅网络丢失事件。调用register后,才能接收到此事件通知
  8. netCon.on('netLost', function (data) {
  9. console.log(JSON.stringify(data))
  10. })
  11. // 使用unregister接口取消订阅
  12. netCon.unregister(function (error) {
  13. console.log(JSON.stringify(error))
  14. })

on('netUnavailable')

on(type: 'netUnavailable', callback: Callback<void>): void

订阅网络不可用事件。

模型约束:此接口调用之前需要先调用register接口,使用unregister取消订阅默认网络状态变化的通知。

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

type

string

订阅事件,固定为'netUnavailable'。

netUnavailable:网络不可用事件。

callback

Callback<void>

回调函数,无返回结果。

示例:

  1. // 创建NetConnection对象
  2. let netCon = connection.createNetConnection()
  3. // 先使用register接口注册订阅事件
  4. netCon.register(function (error) {
  5. console.log(JSON.stringify(error))
  6. })
  7. // 订阅网络不可用事件。调用register后,才能接收到此事件通知
  8. netCon.on('netUnavailable', function (data) {
  9. console.log(JSON.stringify(data))
  10. })
  11. // 使用unregister接口取消订阅
  12. netCon.unregister(function (error) {
  13. console.log(JSON.stringify(error))
  14. })

NetHandle

数据网络的句柄。

在调用NetHandle的方法之前,需要先获取NetHandle对象。

系统能力:SystemCapability.Communication.NetManager.Core

属性

名称

类型

必填

说明

netId

number

网络ID,取值为0代表没有默认网络,其余取值必须大于等于100。

bindSocket9+

bindSocket(socketParam: TCPSocket | UDPSocket, callback: AsyncCallback<void>): void

将TCPSocket或UDPSocket绑定到当前网络,使用callback方式作为异步方法。

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

socketParam

TCPSocket | UDPSocket

待绑定的TCPSocket或UDPSocket对象。

callback

AsyncCallback<void>

回调函数。当TCPSocket或UDPSocket成功绑定到当前网络,err为undefined,否则为错误对象。

错误码:

错误码ID

错误信息

401

Parameter error.

2100001

Invalid parameter value.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. import socket from "@ohos.net.socket";
  2. connection.getDefaultNet().then((netHandle) => {
  3. var tcp = socket.constructTCPSocketInstance();
  4. var udp = socket.constructUDPSocketInstance();
  5. let socketType = "TCPSocket";
  6. if (socketType == "TCPSocket") {
  7. tcp.bind({
  8. address: '192.168.xx.xxx', port: 8080, family: 1
  9. }, error => {
  10. if (error) {
  11. console.log('bind fail');
  12. }
  13. netHandle.bindSocket(tcp, (error, data) => {
  14. if (error) {
  15. console.log(JSON.stringify(error));
  16. } else {
  17. console.log(JSON.stringify(data));
  18. }
  19. })
  20. })
  21. } else {
  22. let callback = value => {
  23. console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo);
  24. }
  25. udp.on('message', callback);
  26. udp.bind({
  27. address: '192.168.xx.xxx', port: 8080, family: 1
  28. }, error => {
  29. if (error) {
  30. console.log('bind fail');
  31. }
  32. udp.on('message', (data) => {
  33. console.log(JSON.stringify(data))
  34. });
  35. netHandle.bindSocket(udp, (error, data) => {
  36. if (error) {
  37. console.log(JSON.stringify(error));
  38. } else {
  39. console.log(JSON.stringify(data));
  40. }
  41. })
  42. })
  43. }
  44. })

bindSocket9+

bindSocket(socketParam: TCPSocket | UDPSocket): Promise<void>;

将TCPSocket或UDPSockett绑定到当前网络,使用Promise方式作为异步方法。

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

socketParam

TCPSocket | UDPSocket

待绑定的TCPSocket或UDPSocket对象。

返回值:

类型

说明

Promise<void>

无返回值的Promise对象。

错误码:

错误码ID

错误信息

401

Parameter error.

2100001

Invalid parameter value.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. import socket from "@ohos.net.socket";
  2. connection.getDefaultNet().then((netHandle) => {
  3. var tcp = socket.constructTCPSocketInstance();
  4. var udp = socket.constructUDPSocketInstance();
  5. let socketType = "TCPSocket";
  6. if (socketType == "TCPSocket") {
  7. tcp.bind({
  8. address: '192.168.xx.xxx', port: 8080, family: 1
  9. }, error => {
  10. if (error) {
  11. console.log('bind fail');
  12. }
  13. netHandle.bindSocket(tcp).then((data) => {
  14. console.log(JSON.stringify(data));
  15. }).catch(error => {
  16. console.log(JSON.stringify(error));
  17. })
  18. })
  19. } else {
  20. let callback = value => {
  21. console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo);
  22. }
  23. udp.on('message', callback);
  24. udp.bind({
  25. address: '192.168.xx.xxx', port: 8080, family: 1
  26. }, error => {
  27. if (error) {
  28. console.log('bind fail');
  29. }
  30. udp.on('message', (data) => {
  31. console.log(JSON.stringify(data));
  32. })
  33. netHandle.bindSocket(udp).then((data) => {
  34. console.log(JSON.stringify(data));
  35. }).catch(error => {
  36. console.log(JSON.stringify(error));
  37. })
  38. })
  39. }
  40. })

getAddressesByName

getAddressesByName(host: string, callback: AsyncCallback<Array<NetAddress>>): void

使用对应网络解析主机名以获取所有IP地址,使用callback方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

host

string

需要解析的主机名。

callback

AsyncCallback<Array<NetAddress>>

回调函数。当使用对应网络解析主机名成功获取所有IP地址,err为undefined,data为获取到的所有IP地址;否则为错误对象。

错误码:

错误码ID

错误信息

201

Permission denied.

401

Parameter error.

2100001

Invalid parameter value.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.getDefaultNet().then(function (netHandle) {
  2. let host = "xxxx";
  3. netHandle.getAddressesByName(host, function (error, data) {
  4. console.log(JSON.stringify(error))
  5. console.log(JSON.stringify(data))
  6. })
  7. })

getAddressesByName

getAddressesByName(host: string): Promise<Array<NetAddress>>

使用对应网络解析主机名以获取所有IP地址,使用Promise方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

host

string

需要解析的主机名。

返回值:

类型

说明

Promise<Array<NetAddress>>

以Promise形式返回所有IP地址。

错误码:

错误码ID

错误信息

201

Permission denied.

401

Parameter error.

2100001

Invalid parameter value.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.getDefaultNet().then(function (netHandle) {
  2. let host = "xxxx";
  3. netHandle.getAddressesByName(host).then(function (data) {
  4. console.log(JSON.stringify(data))
  5. })
  6. })

getAddressByName

getAddressByName(host: string, callback: AsyncCallback<NetAddress>): void

使用对应网络解析主机名以获取第一个IP地址,使用callback方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

host

string

需要解析的主机名。

callback

AsyncCallback<NetAddress>

回调函数。当使用对应网络解析主机名获取第一个IP地址成功,err为undefined,data为获取的第一个IP地址;否则为错误对象。

错误码:

错误码ID

错误信息

201

Permission denied.

401

Parameter error.

2100001

Invalid parameter value.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.getDefaultNet().then(function (netHandle) {
  2. let host = "xxxx";
  3. netHandle.getAddressByName(host, function (error, data) {
  4. console.log(JSON.stringify(error))
  5. console.log(JSON.stringify(data))
  6. })
  7. })

getAddressByName

getAddressByName(host: string): Promise<NetAddress>

使用对应网络解析主机名以获取第一个IP地址,使用Promise方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名

类型

必填

说明

host

string

需要解析的主机名。

返回值:

类型

说明

Promise<NetAddress>

以Promise形式返回第一个IP地址。

错误码:

错误码ID

错误信息

201

Permission denied.

401

Parameter error.

2100001

Invalid parameter value.

2100002

Operation failed. Cannot connect to service.

2100003

System internal error.

示例:

  1. connection.getDefaultNet().then(function (netHandle) {
  2. let host = "xxxx";
  3. netHandle.getAddressByName(host).then(function (data) {
  4. console.log(JSON.stringify(data))
  5. })
  6. })

NetCap

网络具体能力。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetManager.Core。

名称

说明

NET_CAPABILITY_MMS

0

表示网络可以访问运营商的MMSC(Multimedia Message Service,多媒体短信服务)发送和接收彩信。

NET_CAPABILITY_NOT_METERED

11

表示网络流量未被计费。

NET_CAPABILITY_INTERNET

12

表示该网络应具有访问Internet的能力,该能力由网络提供者设置。

NET_CAPABILITY_NOT_VPN

15

表示网络不使用VPN(Virtual Private Network,虚拟专用网络)。

NET_CAPABILITY_VALIDATED

16

表示该网络访问Internet的能力被网络管理成功验证,该能力由网络管理模块设置。

NetBearType

网络类型。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetManager.Core。

名称

说明

BEARER_CELLULAR

0

蜂窝网络。

BEARER_WIFI

1

Wi-Fi网络。

BEARER_ETHERNET

3

以太网网络。

NetSpecifier

提供承载数据网络能力的实例。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetManager.Core。

名称

类型

必填

说明

netCapabilities

NetCapabilities

存储数据网络的传输能力和承载类型。

bearerPrivateIdentifier

string

网络标识符,Wi-Fi网络的标识符是"wifi",蜂窝网络的标识符是"slot0"(对应SIM卡1)。

NetCapabilities

网络的能力集。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetManager.Core。

名称

类型

必填

说明

linkUpBandwidthKbps

number

上行(设备到网络)带宽。

linkDownBandwidthKbps

number

下行(网络到设备)带宽。

networkCap

Array<NetCap>

网络具体能力。

bearerTypes

Array<NetBearType>

网络类型。

ConnectionProperties

网络连接信息。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetManager.Core。

名称

类型

必填

说明

interfaceName

string

网卡名称。

domains

string

所属域,默认""。

linkAddresses

Array<LinkAddress>

链路信息。

routes

Array<RouteInfo>

路由信息。

dnses

Array<NetAddress>

网络地址,参考NetAddress

mtu

number

最大传输单元。

RouteInfo

网络路由信息。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetManager.Core。

名称

类型

必填

说明

interface

string

网卡名称。

destination

LinkAddress

目的地址。

gateway

NetAddress

网关地址。

hasGateway

boolean

是否有网关。

isDefaultRoute

boolean

是否为默认路由。

LinkAddress

网络链路信息。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetManager.Core。

名称

类型

必填

说明

address

NetAddress

链路地址。

prefixLength

number

链路地址前缀的长度。

NetAddress

网络地址。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetManager.Core。

名称

类型

必填

说明

address

string

地址。

family

number

IPv4 = 1,IPv6 = 2,默认IPv4。

port

number

端口,取值范围[0, 65535]。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号