@ohos.net.connection (网络连接管理)

网络连接管理提供管理网络一些基础能力,包括获取默认激活的网络、获取所有激活网络列表、获取网络能力信息等功能。

说明:

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

无特殊说明,接口默认不支持并发。

导入模块

import { connection } from '@kit.NetworkKit';

connection.createNetConnection

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

创建一个NetConnection对象,可用于监听网络状态。netSpecifier表示需要监听网络的网络特征;timeout是超时时间(单位:毫秒);netSpecifier是timeout的必要条件,两者都没有则表示关注默认网络。

说明:

若需要监听网络状态,创建一个NetConnection对象后,还需调用register注册指定网络状态变化的通知。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

参数:

参数名 类型 必填 说明
netSpecifier NetSpecifier 需要监听网络的网络特征,缺省则表示监听默认网络。
timeout number 获取netSpecifier指定网络时的超时时间,传入值需为uint32_t范围内的整数,仅netSpecifier存在时生效,默认值为0。
说明:当监听网络不存在时,会尝试激活此网络。若超过设置的超时时间,且注册了网络状态监听,则会触发netUnavailable事件。

返回值:

类型 说明
NetConnection 需要监听的网络连接对象的类型。

示例:

import { connection } from '@kit.NetworkKit';

// 示例1:仅关注默认网络, 无需指定netSpecifier参数,timeout参数未传入说明未使用超时时间,此时timeout为0。
let netConnection = connection.createNetConnection();

// 示例2:仅关注蜂窝网络,需要指定网络类型为蜂窝网络。
let timeout = 1000;
let netConnectionCellular = connection.createNetConnection({
  netCapabilities: {
    bearerTypes: [connection.NetBearType.BEARER_CELLULAR]
  }
}, timeout);

// 示例3:关注蜂窝或Wi-Fi网络,需要指定网络类型为蜂窝网络和Wi-Fi网络。
let netConnectionCellularAndWifi = connection.createNetConnection({
  netCapabilities: {
    bearerTypes: [connection.NetBearType.BEARER_CELLULAR,
      connection.NetBearType.BEARER_WIFI]
  }
});

connection.getDefaultNet

getDefaultNet(callback: AsyncCallback<NetHandle>): void

获取系统默认使用的网络句柄,包含网络ID。使用callback异步回调。

说明:

  • 系统默认使用的网络,该网络的capabilities必须具备NET_CAPABILITY_INTERNET且不是VPN类型的网络。

  • 该接口的返回由系统决定,与应用是否指定网络无关。

  • 一般情况下优先级为:以太网(PC)|蓝牙(手表)> WIFI > 蜂窝,特殊情况以实际返回结果为准。

  • NetHandle为网络唯一标识,当无网络可用时,返回0。其可用于getNetCapabilities继续查询更多网络信息。

需要权限:ohos.permission.GET_NETWORK_INFO

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

参数:

参数名 类型 必填 说明
callback AsyncCallback<NetHandle> 回调函数。当成功获取默认激活网络的网络句柄时,error为undefined,data为默认网络的网络句柄;否则为错误对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.getDefaultNet((error: BusinessError, data: connection.NetHandle) => {
  if (error) {
    console.error(`Failed to get default net. Code:${error.code}, message:${error.message}`);
    return;
  }
  console.info("Succeeded to get data: " + JSON.stringify(data));
});

connection.getDefaultNet

getDefaultNet(): Promise<NetHandle>

获取系统默认使用的网络句柄,包含网络ID。使用Promise异步回调。

说明:

  • 系统默认使用的网络,该网络的capabilities必须具备NET_CAPABILITY_INTERNET且不是VPN类型的网络。

  • 该接口的返回由系统决定,与应用是否指定网络无关。

  • 一般情况下,优先级:以太网(PC)|蓝牙(手表)> WIFI > 蜂窝,特殊情况以实际返回结果为准。

  • NetHandle为网络唯一标识,当无网络可用时,返回0。其可用于getNetCapabilities继续查询更多网络信息。

需要权限:ohos.permission.GET_NETWORK_INFO

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

返回值:

类型 说明
Promise<NetHandle> 以Promise形式返回默认网络的网络句柄。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';

connection.getDefaultNet().then((data: connection.NetHandle) => {
  console.info("Succeeded to get data: " + JSON.stringify(data));
});

connection.getDefaultNetSync9+

getDefaultNetSync(): NetHandle

获取系统默认使用的网络句柄,包含网络ID。使用同步方式返回。

说明:

  • 系统默认使用的网络,该网络的capabilities必须具备NET_CAPABILITY_INTERNET且不是VPN类型的网络。

  • 该接口的返回由系统决定,与应用是否指定网络无关。

  • 一般情况下,优先级:以太网(PC)|蓝牙(手表)> WIFI > 蜂窝,特殊情况以实际返回结果为准。

  • NetHandle为网络唯一标识,当无网络可用时,返回0。其可用于getNetCapabilities继续查询更多网络信息。

需要权限:ohos.permission.GET_NETWORK_INFO

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

返回值:

类型 说明
NetHandle 以同步方式返回默认网络的网络句柄。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';

let netHandle = connection.getDefaultNetSync();

connection.setAppHttpProxy11+

setAppHttpProxy(httpProxy: HttpProxy): void

设置应用级Http代理配置信息。

说明:

若需使用本接口所配置的代理信息,则需在HttpRequestOptions字段中将usingProxy设置为true以启用代理转发。本接口仅负责配置代理规则,不校验代理服务的有效性。

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

参数:

参数名 类型 必填 说明
httpProxy HttpProxy 网络应用级Http代理配置信息。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
401 Parameter error.
2100001 Invalid http proxy.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { http } from '@kit.NetworkKit';

let exclusionStr = "192.168,baidu.com";
let exclusionArray = exclusionStr.split(',');
connection.setAppHttpProxy({
  host: "192.168.xx.xxx",
  port: 8080,
  exclusionList: exclusionArray
} as connection.HttpProxy);
let httpRequest = http.createHttp();
let options: http.HttpRequestOptions = {
  usingProxy: true, // 选择使用网络代理,从API 10开始支持该属性。
};
// 发起一个HTTP请求。
httpRequest.request("EXAMPLE_URL", options, (err: BusinessError, data: http.HttpResponse) => {
  if (!err) {
   console.info(`Result: ${data.result}`);
   console.info(`code: ${data.responseCode}`);
   console.info(`type: ${JSON.stringify(data.resultType)}`);
   console.info(`header: ${JSON.stringify(data.header)}`);
   console.info(`cookies: ${data.cookies}`); // 从API version 8开始支持cookie。
  } else {
   console.error(`error: ${JSON.stringify(err)}`);
  }
});

connection.getDefaultHttpProxy10+

getDefaultHttpProxy(callback: AsyncCallback<HttpProxy>): void

获取网络的默认代理配置信息。使用callback异步回调。

说明:

  • 如果设置了全局代理,则返回全局代理配置信息。
  • 如果进程使用setAppNet绑定到指定NetHandle对应的网络,则返回NetHandle对应网络的代理配置信息。在其它情况下,将返回默认网络的代理配置信息。

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

参数:

参数名 类型 必填 说明
callback AsyncCallback<HttpProxy> 回调函数。当成功获取网络的默认代理配置信息时,error为undefined,data为网络的默认代理配置信息;否则为错误对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码

错误码ID 错误信息
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.getDefaultHttpProxy((error: BusinessError, data: connection.HttpProxy) => {
  if (error) {
    console.error(`Failed to get default http proxy. Code:${error.code}, message:${error.message}`);
    return;
  }
  console.info("Succeeded to get data" + JSON.stringify(data));
});

connection.getDefaultHttpProxy10+

getDefaultHttpProxy(): Promise<HttpProxy>

获取网络默认的代理配置信息。使用Promise异步回调。

说明:

  • 如果设置了全局代理,则返回全局代理配置信息。
  • 如果进程使用setAppNet绑定到指定NetHandle对应的网络,则返回NetHandle对应网络的代理配置信息。在其它情况下,将返回默认网络的代理配置信息。

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

返回值:

类型 说明
Promise<HttpProxy> 以Promise形式返回网络默认的代理配置信息。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码

错误码ID 错误信息
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.getDefaultHttpProxy().then((data: connection.HttpProxy) => {
  console.info(JSON.stringify(data));
}).catch((error: BusinessError) => {
  console.info(JSON.stringify(error));
});

connection.getAppNet9+

getAppNet(callback: AsyncCallback<NetHandle>): void

获取App绑定的网络句柄。使用callback异步回调。

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

参数:

参数名 类型 必填 说明
callback AsyncCallback<NetHandle> 回调函数。当成功获取App绑定的网络信息时,error为undefined,data为获取到App绑定的网络信息;否则为错误对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
401 Parameter error.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.getAppNet((error: BusinessError, data: connection.NetHandle) => {
  if (error) {
    console.error(`Failed to get App net. Code:${error.code}, message:${error.message}`);
    return;
  }
  console.info("Succeeded to get data: " + JSON.stringify(data));
})

connection.getAppNet9+

getAppNet(): Promise<NetHandle>

获取App绑定的网络信息。使用Promise异步回调。

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

返回值:

类型 说明
Promise<NetHandle> 以Promise形式返回App绑定的网络信息。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码

错误码ID 错误信息
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.getAppNet().then((data: connection.NetHandle) => {
  console.info(JSON.stringify(data));
}).catch((error: BusinessError) => {
  console.info(JSON.stringify(error));
});

connection.getAppNetSync10+

getAppNetSync(): NetHandle

获取App绑定的网络信息。使用同步方式返回。

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

返回值:

类型 说明
NetHandle 返回App绑定的数据网络。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码

错误码ID 错误信息
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';

let netHandle = connection.getAppNetSync();

connection.setAppNet9+

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

将App绑定到特定的网络,绑定后App只能通过netHandle对应的网络访问网络。使用callback异步回调。

需要权限:ohos.permission.INTERNET

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

参数:

参数名 类型 必填 说明
netHandle NetHandle 网络句柄。
callback AsyncCallback<void> 回调函数。当成功绑定App到指定网络时,error为undefined,否则为错误对象。

说明:

当应用不再使用该网络或者该网络不可用时,需要解除App和指定网络的绑定关系,以免导致应用无法上网。

如需解除App和指定网络的绑定关系,可以调用setAppNet,并传入一个netId = 0的NetHandle对象,参考以下示例。

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  netHandle.netId = 0;
  connection.setAppNet(netHandle, (error: BusinessError, data: void) => {
    if (error) {
      console.error(`Failed to get default net. Code:${error.code}, message:${error.message}`);
      return;
    }
    console.info("Succeeded to get data: " + JSON.stringify(data));
  });
});

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

当应用绑定WIFI网络,WIFI弱信号或者断开时,如果不解绑,会导致应用无法上网。

以下示例以绑定WIFI网络为例,结合on('netAvailable')on('netLost')接口,当监听到WIFI网络可用时绑定WIFI网络,不可用时解绑,使用默认网络。


import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 创建NetConnection对象。仅关注WIFI网络,需要指定网络类型为WIFI网络。
let netCon = connection.createNetConnection({
  netCapabilities: {
    bearerTypes: [connection.NetBearType.BEARER_WIFI]
  }
});

// 使用on接口订阅网络可用事件
netCon.on('netAvailable', (netHandle: connection.NetHandle) => {
  console.info("Succeeded to get data: " + JSON.stringify(netHandle));
  connection.setAppNet(netHandle, (error: BusinessError, data: void) => {
    if (error) {
      console.error(`Failed to setAppNet. Code:${error.code}, message:${error.message}`);
      return;
    }
    console.info("Succeeded to setAppNet, netid: " + JSON.stringify(netHandle.netId));
  });
});

// 使用on接口订阅网络丢失事件。
netCon.on('netLost', (netHandle: connection.NetHandle) => {
  console.info("Succeeded to get data: " + JSON.stringify(netHandle));
  // 网络丢失时,需要主动解除指定网络的绑定关系
  netHandle.netId = 0;
  connection.setAppNet(netHandle, (error: BusinessError, data: void) => {
    if (error) {
      console.error(`Failed to setAppNet. Code:${error.code}, message:${error.message}`);
      return;
    }
    console.info("Succeeded to setAppNet, netid: " + JSON.stringify(netHandle.netId));
  });
});

// 注册网络状态变化事件。此接口要在调用on后调用。
netCon.register((error: BusinessError) => {
  if (error) {
    console.error(JSON.stringify(error));
  }
});

connection.setAppNet9+

setAppNet(netHandle: NetHandle): Promise<void>

将App异步绑定到特定的网络,绑定后App只能通过netHandle对应的网络访问网络。使用Promise异步回调。

需要权限:ohos.permission.INTERNET

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

参数:

参数名 类型 必填 说明
netHandle NetHandle 网络句柄。

说明:

当应用不再使用该网络或者该网络不可用时,需要解除App和指定网络的绑定关系,以免导致应用无法上网。

如需解除App和指定网络的绑定关系,可以调用setAppNet,并传入一个netId = 0的NetHandle对象,参考以下示例。

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  netHandle.netId = 0;
  connection.setAppNet(netHandle).then(() => {
    console.info("setAppNet success");
  }).catch((error: BusinessError) => {
    console.error(`Failed to setAppNet. Code:${error.code}, message:${error.message}`);
  })
});

返回值:

类型 说明
Promise<void> Promise对象,无返回结果。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

当应用绑定WIFI网络,WIFI弱信号或者断开时,如果不解绑,会导致应用无法上网。

以下示例以绑定WIFI网络为例,结合on('netAvailable')on('netLost')接口,当监听到WIFI网络可用时绑定WIFI网络,不可用时解绑,使用默认网络。


import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 创建NetConnection对象。仅关注WIFI网络,需要指定网络类型为WIFI网络。
let netCon = connection.createNetConnection({
  netCapabilities: {
    bearerTypes: [connection.NetBearType.BEARER_WIFI]
  }
});

// 使用on接口订阅网络可用事件
netCon.on('netAvailable', (netHandle: connection.NetHandle) => {
  console.info("Succeeded to get data: " + JSON.stringify(netHandle));
  connection.setAppNet(netHandle).then(() => {
    console.info("setAppNet success, netid: " + JSON.stringify(netHandle.netId));
  }).catch((error: BusinessError) => {
    console.error(`Failed to setAppNet. Code:${error.code}, message:${error.message}`);
  })
});

// 使用on接口订阅网络丢失事件。
netCon.on('netLost', (netHandle: connection.NetHandle) => {
  console.info("Succeeded to get data: " + JSON.stringify(netHandle));
  // 网络丢失时,需要主动解除指定网络的绑定关系
  netHandle.netId = 0;
  connection.setAppNet(netHandle).then(() => {
    console.info("setAppNet success, netid: " + JSON.stringify(netHandle.netId));
  }).catch((error: BusinessError) => {
    console.error(`Failed to setAppNet. Code:${error.code}, message:${error.message}`);
  })
});

// 注册网络状态变化事件。此接口要在调用on后调用。
netCon.register((error: BusinessError) => {
  if (error) {
    console.error(JSON.stringify(error));
  }
});

connection.getAllNets

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

获取所有处于连接状态的网络列表,使用callback异步回调。

需要权限:ohos.permission.GET_NETWORK_INFO

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

参数:

参数名 类型 必填 说明
callback AsyncCallback<Array<NetHandle>> 回调函数。当成功获取所有处于连接状态的网络列表时,error为undefined,data为处于激活状态的网络列表;否则为错误对象。
说明: 在Wi-Fi和蜂窝数据开关均开启的情况下,若无应用指定使用蜂窝网络,则仅激活Wi-Fi网络,因此仅返回Wi-Fi的NetHandle。除非有特定应用启动蜂窝网络,才能同时获取Wi-Fi和蜂窝数据的NetHandle。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.getAllNets((error: BusinessError, data: connection.NetHandle[]) => {
  if (error) {
    console.error(`Failed to get all nets. Code:${error.code}, message:${error.message}`);
    return;
  }
  console.info("Succeeded to get data: " + JSON.stringify(data));
}); 

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 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';

connection.getAllNets().then((data: connection.NetHandle[]) => {
  console.info("Succeeded to get data: " + JSON.stringify(data));
});

connection.getAllNetsSync10+

getAllNetsSync(): Array<NetHandle>

获取所有处于连接状态的网络列表。使用同步方式返回。

需要权限:ohos.permission.GET_NETWORK_INFO

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

返回值:

类型 说明
Array<NetHandle> 返回所有处于连接状态的网络列表。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';

let netHandle = connection.getAllNetsSync();

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对应的网络的连接信息时,error为undefined,data为获取的网络连接信息;否则为错误对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 示例: 获取当前默认网络的连接信息。
connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  if (netHandle.netId == 0) {
    // 当前没有已连接的网络时,netHandle的netId为0,属于异常场景。可根据实际情况添加处理机制。
    return;
  }
  connection.getConnectionProperties(netHandle, (error: BusinessError, data: connection.ConnectionProperties) => {
    if (error) {
      console.error(`Failed to get connection properties. Code:${error.code}, message:${error.message}`);
      return;
    }
    console.info("Succeeded to get data: " + JSON.stringify(data));
  })
});

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 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  if (netHandle.netId == 0) {
    // 当前没有已连接的网络时,netHandle的netId为0,属于异常场景。可根据实际情况添加处理机制。
    return;
  }

  connection.getConnectionProperties(netHandle).then((data: connection.ConnectionProperties) => {
    console.info("Succeeded to get data: " + JSON.stringify(data));
  })
});

connection.getConnectionPropertiesSync10+

getConnectionPropertiesSync(netHandle: NetHandle): ConnectionProperties

获取netHandle对应的网络的连接信息,包含网卡名称、域名、链路信息、路由信息、网络地址及最大传输单元。使用同步方式返回。

需要权限:ohos.permission.GET_NETWORK_INFO

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

参数:

参数名 类型 必填 说明
netHandle NetHandle 网络句柄。

返回值:

类型 说明
ConnectionProperties 返回网络的连接信息。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

let netHandle: connection.NetHandle;
let connectionproperties: connection.ConnectionProperties;

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  if (netHandle.netId == 0) {
    // 当前没有已连接的网络时,netHandle的netId为0,属于异常场景。可根据实际情况添加处理机制。
    return;
  }
  netHandle = connection.getDefaultNetSync();
  connectionproperties = connection.getConnectionPropertiesSync(netHandle);
  console.info("Succeeded to get connectionproperties: " + JSON.stringify(connectionproperties));
});

connection.getNetCapabilities

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

获取netHandle对应网络的能力集,包含上/下行带宽、网络具体能力、网络类型。使用callback异步回调。

需要权限:ohos.permission.GET_NETWORK_INFO

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

参数:

参数名 类型 必填 说明
netHandle NetHandle 网络的句柄。
callback AsyncCallback<NetCapabilities> 回调函数。当成功获取netHandle对应网络的能力集时,error为undefined,data为获取到的网络能力集;否则为错误对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  if (netHandle.netId == 0) {
    // 当前没有已连接的网络时,netHandle的netId为0,属于异常场景。可根据实际情况添加处理机制。
    return;
  }
  connection.getNetCapabilities(netHandle, (error: BusinessError, data: connection.NetCapabilities) => {
    if (error) {
      console.error(`Failed to get net capabilities. Code:${error.code}, message:${error.message}`);
      return;
    }
    console.info("Succeeded to get data: " + JSON.stringify(data));
  })
}).catch((error: BusinessError) => {
    console.error(JSON.stringify(error));
});

connection.getNetCapabilities

getNetCapabilities(netHandle: NetHandle): Promise<NetCapabilities>

获取netHandle对应网络的能力集,包含上/下行带宽、网络具体能力、网络类型。使用Promise异步回调。

需要权限:ohos.permission.GET_NETWORK_INFO

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

参数:

参数名 类型 必填 说明
netHandle NetHandle 网络句柄。

返回值:

类型 说明
Promise<NetCapabilities> Promise对象,返回网络的能力集。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  if (netHandle.netId == 0) {
    // 当前没有已连接的网络时,netHandle的netId为0,属于异常场景。可根据实际情况添加处理机制。
    return;
  }
  connection.getNetCapabilities(netHandle).then((data: connection.NetCapabilities) => {
      console.info("Succeeded to get data: " + JSON.stringify(data));
  })
}).catch((error: BusinessError) => {
    console.error(JSON.stringify(error));
});

connection.getNetCapabilitiesSync10+

getNetCapabilitiesSync(netHandle: NetHandle): NetCapabilities

获取netHandle对应网络的能力信息,包含上/下行带宽、网络具体能力、网络类型。使用同步方式返回。

需要权限:ohos.permission.GET_NETWORK_INFO

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

参数:

参数名 类型 必填 说明
netHandle NetHandle 网络句柄。

返回值:

类型 说明
NetCapabilities 返回网络的能力集。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

let netHandle: connection.NetHandle;
let getNetCapabilitiesSync: connection.NetCapabilities;

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  if (netHandle.netId == 0) {
    // 当前没有已连接的网络时,netHandle的netId为0,属于异常场景。可根据实际情况添加处理机制。
    return;
  }

  getNetCapabilitiesSync = connection.getNetCapabilitiesSync(netHandle);
  console.info("Succeeded to get net capabilities sync: " + JSON.stringify(getNetCapabilitiesSync));
});

connection.isDefaultNetMetered9+

isDefaultNetMetered(callback: AsyncCallback<boolean>): void

检查当前默认网络上的数据流量使用是否被计费(例如:WiFi网络不会被计费,蜂窝网络会被计费)。使用callback异步回调。

需要权限:ohos.permission.GET_NETWORK_INFO

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

参数:

参数名 类型 必填 说明
callback AsyncCallback<boolean> 回调函数。返回当前网络上的数据流量是否被计费。true表示会被计费,false表示不会被计费。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.isDefaultNetMetered((error: BusinessError, data: boolean) => {
  console.error(JSON.stringify(error));
  console.info('data: ' + data);
});

connection.isDefaultNetMetered9+

isDefaultNetMetered(): Promise<boolean>

检查当前默认网络上的数据流量使用是否被计费(例如:WiFi网络不会被计费,蜂窝网络会被计费)。使用Promise异步回调。

需要权限:ohos.permission.GET_NETWORK_INFO

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

返回值:

类型 说明
Promise<boolean> Promise对象。返回当前网络上的数据流量是否被计费。true表示会被计费,false表示不会被计费。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';

connection.isDefaultNetMetered().then((data: boolean) => {
  console.info('data: ' + data);
});

connection.isDefaultNetMeteredSync10+

isDefaultNetMeteredSync(): boolean

检查当前网络上的数据流量使用是否被计费(例如:WiFi网络不会被计费,蜂窝网络会被计费)。使用同步方式返回。

需要权限:ohos.permission.GET_NETWORK_INFO

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

返回值:

类型 说明
boolean 表示当前网络上的数据流量是否被计费。true表示会被计费,false表示不会被计费。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';

let isMetered = connection.isDefaultNetMeteredSync();

connection.hasDefaultNet

hasDefaultNet(callback: AsyncCallback<boolean>): void

获取当前是否有可用网络,使用callback异步回调。如果有可用网络,可以使用getDefaultNet获取默认网络句柄。

需要权限:ohos.permission.GET_NETWORK_INFO

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

参数:

参数名 类型 必填 说明
callback AsyncCallback<boolean> 回调函数。返回当前是否有可用网络。true表示当前有可用网络,false表示当前没有可用网络。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.hasDefaultNet((error: BusinessError, data: boolean) => {
  console.error(JSON.stringify(error));
  console.info('data: ' + data);
});

connection.hasDefaultNet

hasDefaultNet(): Promise<boolean>

获取当前是否有可用网络。使用Promise异步回调。如果有可用网络,可以使用getDefaultNet获取默认网络句柄。

需要权限:ohos.permission.GET_NETWORK_INFO

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

返回值:

类型 说明
Promise<boolean> Promise对象。返回当前是否有可用网络。true表示当前有可用网络,false表示当前没有可用网络。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';

connection.hasDefaultNet().then((data: boolean) => {
  console.info('data: ' + data);
});

connection.hasDefaultNetSync10+

hasDefaultNetSync(): boolean

获取当前是否有可用网络。使用同步方式返回。

需要权限:ohos.permission.GET_NETWORK_INFO

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

返回值:

类型 说明
boolean 返回当前是否有可用网络。true表示当前有可用网络,false表示当前没有可用网络。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';

let hasDefaultNet = connection.hasDefaultNetSync();

connection.reportNetConnected

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

向网络管理上报网络处于可用状态。使用callback方式异步回调。

说明:

该接口用于浏览器连接portal网络,网络认证成功后,向网络管理上报网络连接成功,网络管理会触发网络探测,更新网络状态。

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

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

参数:

参数名 类型 必填 说明
netHandle NetHandle 网络句柄,参考NetHandle
callback AsyncCallback<void> 回调函数。当向网络管理报告网络处于可用状态成功,error为undefined,否则为错误对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  connection.reportNetConnected(netHandle, (error: BusinessError) => {
    console.error(JSON.stringify(error));
  });
});

connection.reportNetConnected

reportNetConnected(netHandle: NetHandle): Promise<void>

向网络管理报告网络处于可用状态。使用Promise异步回调。

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

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

参数:

参数名 类型 必填 说明
netHandle NetHandle 网络句柄,参考NetHandle

返回值:

类型 说明
Promise<void> Promise对象。无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  connection.reportNetConnected(netHandle).then(() => {
    console.info(`report success`);
  });
});

connection.reportNetDisconnected

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

向网络管理上报网络处于不可用状态。使用callback异步回调。

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

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

参数:

参数名 类型 必填 说明
netHandle NetHandle 网络句柄,参考NetHandle
callback AsyncCallback<void> 回调函数。当向网络管理报告网络处于不可用状态成功时,error为undefined,否则为错误对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.getDefaultNet((error: BusinessError, netHandle: connection.NetHandle) => {
  if (netHandle.netId == 0) {
    // 当前没有已连接的网络时,netHandle的netId为0,属于异常场景。可根据实际情况添加处理机制。
    return;
  }
  connection.reportNetDisconnected(netHandle, (error: BusinessError, data: void) => {
    if (error) {
      console.error(`Failed to get default net. Code:${error.code}, message:${error.message}`);
      return;
    }
    console.info("report success");
  });
});

connection.reportNetDisconnected

reportNetDisconnected(netHandle: NetHandle): Promise<void>

向网络管理上报网络处于不可用状态。使用Promise异步回调。

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

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

参数:

参数名 类型 必填 说明
netHandle NetHandle 网络句柄。

返回值:

类型 说明
Promise<void> Promise对象。无返回值的Promise对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  connection.reportNetDisconnected(netHandle).then( () => {
    console.info(`report success`);
  });
});

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地址,error为undefined,data为获取到的所有IP地址;否则为错误对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.getAddressesByName("xxxx", (error: BusinessError, data: connection.NetAddress[]) => {
  if (error) {
    console.error(`Failed to get addresses. Code:${error.code}, message:${error.message}`);
    return;
  }
  console.info("Succeeded to get data: " + JSON.stringify(data));
});

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 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';

connection.getAddressesByName("xxxx").then((data: connection.NetAddress[]) => {
  console.info("Succeeded to get data: " + JSON.stringify(data));
});

connection.getAddressesByNameWithOptions23+

getAddressesByNameWithOptions(host: string, option?: QueryOptions): Promise<Array<NetAddress>>

使用当前默认网络基于指定IP类型进行DNS解析。使用Promise异步回调。

需要权限:ohos.permission.INTERNET

模型约束:此接口仅可在Stage模型下使用。

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

参数:

参数名 类型 必填 说明
host string 需要解析的主机名。例如:"www.example.com"。
option QueryOptions 需要查询的IP类型,默认值为FAMILY_TYPE_ALL。

返回值:

类型 说明
Promise<Array<NetAddress>> Promise对象,返回查询到的IP地址。返回值中的port字段固定为0,无需关注。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let option: connection.QueryOptions = {
  family: connection.FamilyType.FAMILY_TYPE_IPV4
};
connection.getAddressesByNameWithOptions("www.example.com", option).then((data: connection.NetAddress[]) => {
  console.info(`Succeeded to get data: ${JSON.stringify(data)}`);
}).catch((err: BusinessError) => {
  console.error(`get ERROR msg: ${JSON.stringify(err)}`)
});

QueryOptions23+

需要查询的IP类型。

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

名称 类型 只读 可选 说明
family FamilyType 需要查询的具体IP地址类型,默认值为FAMILY_TYPE_ALL。

FamilyType23+

需要查询的具体IP地址类型。

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

名称 说明
FAMILY_TYPE_ALL 0 查询所有IPv4和IPv6地址。
FAMILY_TYPE_IPV4 1 仅查询IPv4地址。
FAMILY_TYPE_IPV6 2 仅查询IPv6地址。

connection.addCustomDnsRule11+

addCustomDnsRule(host: string, ip: Array<string>, callback: AsyncCallback<void>): void

为当前应用程序添加自定义host和对应的IP地址的映射。使用callback异步回调。

说明:

不需要时可调用removeCustomDnsRule删除某一条自定义规则或调用clearCustomDnsRules删除当前应用程序的所有的自定义DNS规则 。

需要权限:ohos.permission.INTERNET

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

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

参数:

参数名 类型 必填 说明
host string 需要自定义解析的主机名。
ip Array<string> 主机名所映射的IP地址列表。
callback AsyncCallback<void> 回调函数。当为当前应用程序添加自定义host和对应的ip地址的映射成功,error为undefined,否则为错误对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.addCustomDnsRule("xxxx", ["xx.xx.xx.xx","xx.xx.xx.xx"], (error: BusinessError, data: void) => {
  if (error) {
    console.error(`Failed to get add custom dns rule. Code:${error.code}, message:${error.message}`);
    return;
  }
  console.info("Succeeded to get data: " + JSON.stringify(data));
})

connection.addCustomDnsRule11+

addCustomDnsRule(host: string, ip: Array<string>): Promise<void>

为当前应用程序添加自定义host和对应的IP地址的映射。使用Promise异步回调。

说明:

不需要时可调用removeCustomDnsRule删除某一条自定义规则或调用clearCustomDnsRules删除当前应用程序的所有的自定义DNS规则 。

需要权限:ohos.permission.INTERNET

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

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

参数:

参数名 类型 必填 说明
host string 需要自定义解析的主机名。
ip Array<string> 主机名所映射的IP地址列表。

返回值:

类型 说明
Promise<void> Promise对象。无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.addCustomDnsRule("xxxx", ["xx.xx.xx.xx","xx.xx.xx.xx"]).then(() => {
    console.info("success");
}).catch((error: BusinessError) => {
    console.error(JSON.stringify(error));
})

connection.removeCustomDnsRule11+

removeCustomDnsRule(host: string, callback: AsyncCallback<void>): void

删除当前应用程序中对应host的自定义DNS规则。使用callback异步回调。

说明:

可调用addCustomDnsRule添加自定义规则。

需要权限:ohos.permission.INTERNET

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

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

参数:

参数名 类型 必填 说明
host string 需要删除自定义DNS规则的主机名。
callback AsyncCallback<void> 回调函数。当删除当前应用程序中对应host的自定义DNS规则成功,error为undefined,否则为错误对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.removeCustomDnsRule("xxxx", (error: BusinessError, data: void) => {
  if (error) {
    console.error(`Failed to remove custom dns rule. Code:${error.code}, message:${error.message}`);
    return;
  }
  console.info("Succeeded to get data: " + JSON.stringify(data));
})

connection.removeCustomDnsRule11+

removeCustomDnsRule(host: string): Promise<void>

删除当前应用程序中对应host的自定义DNS规则。使用Promise异步回调。

说明:

可调用addCustomDnsRule添加自定义规则。

需要权限:ohos.permission.INTERNET

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

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

参数:

参数名 类型 必填 说明
host string 需要删除自定义DNS规则的主机名。

返回值:

类型 说明
Promise<void> Promise对象。无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.removeCustomDnsRule("xxxx").then(() => {
    console.info("success");
}).catch((error: BusinessError) => {
    console.error(JSON.stringify(error));
})

connection.clearCustomDnsRules11+

clearCustomDnsRules(callback: AsyncCallback<void>): void

删除当前应用程序的所有的自定义DNS规则。使用callback异步回调。

需要权限:ohos.permission.INTERNET

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

参数:

参数名 类型 必填 说明
callback AsyncCallback<void> 回调函数。当删除当前应用程序的所有的自定义DNS规则成功,error为undefined,否则为错误对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.clearCustomDnsRules((error: BusinessError, data: void) => {
  if (error) {
    console.error(`Failed to clear custom dns rules. Code:${error.code}, message:${error.message}`);
    return;
  }
  console.info("Succeeded to get data: " + JSON.stringify(data));
})

connection.clearCustomDnsRules11+

clearCustomDnsRules(): Promise<void>

删除当前应用程序的所有的自定义DNS规则。使用Promise异步回调。

需要权限:ohos.permission.INTERNET

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

返回值:

类型 说明
Promise<void> Promise对象。无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.clearCustomDnsRules().then(() => {
    console.info("success");
}).catch((error: BusinessError) => {
    console.error(JSON.stringify(error));
})

connection.setPacFileUrl20+

setPacFileUrl(pacFileUrl: string): void

设置PAC脚本(Proxy Auto-Configuration Script,代理自动配置脚本)的URL地址,并启动PAC代理能力,比如:http://127.0.0.1:21998/PacProxyScript.pac 。可通过调用findProxyForUrl解析URL地址来获取代理信息。

注意:

1、本接口当前在PC/2in120+、Phone23+、Tablet23+、TV23+设备上支持解析脚本并启用PAC代理能力,Wearable设备类型上只保存脚本地址,不会启用PAC代理能力。
2、该接口不会校验URL真实性,在启动PAC代理时,若URL有误,则启动代理失败,返回2100002错误码。

需要权限:ohos.permission.SET_PAC_URL

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

参数:

参数名 类型 必填 说明
pacFileUrl string 当前PAC脚本的URL地址。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100002 Failed to connect to the service.

示例:

import { connection } from '@kit.NetworkKit';

let pacFileUrl = "http://example.com/proxy.pac";
connection.setPacFileUrl(pacFileUrl);

connection.getPacFileUrl20+

getPacFileUrl(): string

获取当前PAC脚本的URL地址。

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

返回值:

类型 说明
string 当前PAC脚本的URL地址,如果没有PAC脚本则返回空字符串。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码

错误码ID 错误信息
2100002 Failed to connect to the service.

示例:

import { connection } from '@kit.NetworkKit';

let pacFileUrl = connection.getPacFileUrl();
console.info(pacFileUrl);

connection.findProxyForUrl20+

findProxyForUrl(url: string): string

通过设置的PAC脚本,解析指定的URL代理地址,返回对应的PAC代理信息。

说明:

1、可通过 setPacFileUrlsetPacUrl 设置PAC脚本。
2、如果调用本接口前未设置PAC脚本,则返回空字符串。
3、由于setPacFileUrl接口支持PC/2in120+、Phone23+、Tablet23+、TV23+设备解析脚本并启用PAC代理能力,因此本接口支持以上设备获取PAC代理信息。 Wearable设备调用本接口功能不生效,返回空字串。

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

参数:

参数名 类型 必填 说明
url string 要查找代理信息的URL。

返回值:

类型 说明
string 返回代理信息。

示例:

import { connection } from '@kit.NetworkKit';

let proxyInfo = connection.findProxyForUrl("http://example.com");
console.info(proxyInfo);

connection.setPacUrl15+

setPacUrl(pacUrl: string): void

设置系统级代理自动配置(Proxy Auto Config,PAC)脚本地址。

说明:

只支持设置脚本地址,不支持解析和启用代理功能,如需设置脚本并启用代理,则可调用setPacFileUrl接口。

需要权限:ohos.permission.SET_PAC_URL

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

参数:

参数名 类型 必填 说明
pacUrl string 需要设置的PAC脚本的地址,该接口不会对脚本地址进行校验。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';

let pacUrl = "xxx";
connection.setPacUrl(pacUrl);

connection.getPacUrl15+

getPacUrl(): string

获取系统级代理自动配置(PAC)脚本地址。

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

返回值:

类型 说明
string 返回PAC脚本地址。PAC脚本不存在时,抛出2100003错误码。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码

错误码ID 错误信息
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';

let pacUrl = connection.getPacUrl();

connection.setNetExtAttribute20+

setNetExtAttribute(netHandle: NetHandle, netExtAttribute: string): Promise<void>

为netHandle对应的网络设置扩展属性,标识网络的安全级别。使用Promise异步回调。

说明: 该接口所需的权限目前仅支持PC设备。

需要权限:ohos.permission.SET_NET_EXT_ATTRIBUTE

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

参数:

参数名 类型 必填 说明
netHandle NetHandle 网络句柄。
netExtAttribute string 需要设置的网络扩展属性。

返回值:

类型 说明
Promise<void> Promise对象,无返回结果。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  if (netHandle.netId == 0) {
    // 当前没有已连接的网络时,netHandle的netId为0,属于异常场景。可根据实际情况添加处理机制。
    return;
  }
  let netExtAttribute: string = "xxx";
  connection.setNetExtAttribute(netHandle, netExtAttribute).then(() => {
    console.info("setNetExtAttribute success");
  }).catch((error: BusinessError) => {
    console.error("setNetExtAttribute failed, err: " + error.code);
  })
});

connection.setNetExtAttributeSync20+

setNetExtAttributeSync(netHandle: NetHandle, netExtAttribute: string): void

为netHandle对应的网络设置扩展属性,标识网络的安全级别。使用同步方式返回。

说明: 该接口所需的权限目前仅支持PC设备。

需要权限:ohos.permission.SET_NET_EXT_ATTRIBUTE

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

参数:

参数名 类型 必填 说明
netHandle NetHandle 网络句柄。
netExtAttribute string 需要设置的网络扩展属性。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

let netExtAttribute: string = "xxx";
let netHandle = connection.getDefaultNetSync();
if (netHandle.netId != 0) {
  connection.setNetExtAttributeSync(netHandle, netExtAttribute);
}

connection.getNetExtAttribute20+

getNetExtAttribute(netHandle: NetHandle): Promise<string>

获取netHandle对应网络的扩展属性,以确定网络的安全级别。使用Promise异步回调。

需要权限:ohos.permission.GET_NETWORK_INFO

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

参数:

参数名 类型 必填 说明
netHandle NetHandle 网络句柄。

返回值:

类型 说明
Promise<string> Promise对象,返回的网络扩展属性。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  if (netHandle.netId == 0) {
    // 当前没有已连接的网络时,netHandle的netId为0,属于异常场景。可根据实际情况添加处理机制。
    return;
  }
  connection.getNetExtAttribute(netHandle).then((netExtAttribute: string) => {
    console.info("getNetExtAttribute: " + netExtAttribute);
  }).catch((error: BusinessError) => {
    console.error("getNetExtAttribute failed, err: " + error.code);
  })
});

connection.getNetExtAttributeSync20+

getNetExtAttributeSync(netHandle: NetHandle): string

获取netHandle对应网络的扩展属性,以确定网络的安全级别。使用同步方式返回。

需要权限:ohos.permission.GET_NETWORK_INFO

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

参数:

参数名 类型 必填 说明
netHandle NetHandle 网络句柄。

返回值:

类型 说明
string 以同步方式返回的网络扩展属性。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

let netHandle = connection.getDefaultNetSync();
if (netHandle.netId != 0) {
  let netExtAttribute: string = connection.getNetExtAttributeSync(netHandle);
  console.info("getNetExtAttribute: " + netExtAttribute);
}

connection.getIpNeighTable22+

getIpNeighTable(): Promise<Array<NetIpMacInfo>>

获取本地设备IP邻居表条目信息,包括IPv4和IPv6,每个条目信息包括IP地址、MAC地址、网卡名。使用Promise异步回调。

说明:

该接口获取IP邻居表的缓存的数据,并非局域网内所有连接的数据。

开发者可使用此接口排查网络异常、解析IP地址与MAC地址映射。

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

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

返回值:

类型 说明
Promise<Array<NetIpMacInfo>> Promise对象,返回ip邻居表条目信息。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.getIpNeighTable().then((data: connection.NetIpMacInfo[]) => {
  if (data.length !== 0) {
    console.info(`ipAddress:${data[0].ipAddress}`);
    console.info(`ifaceName:${data[0].iface}`);
    console.info(`macAddress:${data[0].macAddress}`);
  }
}).catch((error: BusinessError) => {
  console.error(`error fetching ip neigh table. Code:${error.code}, message:${error.message}`);
});

connection.getConnectOwnerUid23+

getConnectOwnerUid(protocol: ProtocolType, local: NetAddress, remote: NetAddress): Promise<number>

用于查询发起指定网络连接的应用UID。使用Promise异步回调。

说明:

  • 该接口仅限在VPN应用中调用。
  • 调用接口时请设置local和remote参数的端口号。若未设置端口号或将端口号设置为0,接口会基于其他参数筛选出符合条件的UID的集合,并从中返回一个匹配的UID。
  • protocol参数为PROTO_TYPE_UDP时,若通过local,remote参数未筛选出符合条件的UID,则仅基于local参数筛选并返回匹配的UID。

需要权限:ohos.permission.GET_NETWORK_INFO

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

参数:

参数名 类型 必填 说明
protocol ProtocolType 网络协议的类型。
local NetAddress 源网络地址。
remote NetAddress 目标网络地址。

返回值:

类型 说明
Promise<number> Promise对象,返回应用程序的UID。如果不存在匹配的UID则返回-1。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100301 Incorrect usage in non-VPN application.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

let protocol = connection.ProtocolType.PROTO_TYPE_TCP;
let local: connection.NetAddress = { address: '192.168.1.100', family: 1, port: 6666 };
let remote: connection.NetAddress = { address: '192.168.1.200', family: 1, port: 8888 };
connection.getConnectOwnerUid(protocol, local, remote).then((uid) => {
  console.info(`uid: ${uid}`);
}).catch((error: BusinessError) => {
  console.error(`getConnectOwnerUid failed. errorCode: ${error.code} message:${error.message}`);
});

connection.getConnectOwnerUidSync23+

getConnectOwnerUidSync(protocol: ProtocolType, local: NetAddress, remote: NetAddress): number

用于查询发起指定网络连接的应用UID。使用同步方式返回。

说明:

  • 该接口仅限在VPN应用中调用。
  • 调用接口时请设置local和remote参数的端口号。若未设置端口号或将端口号设置为0,接口会基于其他参数筛选出符合条件的UID的集合,并从中返回一个匹配的UID。
  • protocol参数为PROTO_TYPE_UDP时,若通过local,remote参数未筛选出符合条件的UID,则仅基于local参数筛选并返回匹配的UID。

需要权限:ohos.permission.GET_NETWORK_INFO

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

模型约束: 此接口仅可在Stage模型下使用。

参数:

参数名 类型 必填 说明
protocol ProtocolType 网络协议的类型。
local NetAddress 源网络地址。
remote NetAddress 目标网络地址。

返回值:

类型 说明
number 返回应用程序的UID。如果不存在匹配的UID则返回-1。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100301 Incorrect usage in non-VPN application.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

let protocol = connection.ProtocolType.PROTO_TYPE_TCP;
let local: connection.NetAddress = { address: '192.168.1.100', family: 1, port: 6666 };
let remote: connection.NetAddress = { address: '192.168.1.200', family: 1, port: 8888 };
try {
  let uid = connection.getConnectOwnerUidSync(protocol, local, remote);
  console.info(`uid: ${uid}`);
} catch (e) {
  let err = e as BusinessError;
  console.error(`getConnectOwnerUid failed. errorCode: ${err.code} message:${err.message}`);
}

connection.getDnsAscii23+

getDnsAscii(host: string, flag?: ConversionProcess): string

将Unicode编码形式的主机名转换为ASCII编码形式,并可通过可选的转换流程参数(conversionProcess)控制转换行为。

说明:

conversionProcess设置为NO_CONFIGURATION时,只能转换已正式分配含义的Unicode字符所对应的域名。
conversionProcess设置为ALLOW_UNASSIGNED时,可以转换包含尚未分配含义的Unicode字符的域名。
conversionProcess设置为USE_STD3_ASCII_RULES时,会在转换过程中强制按照STD-3 ASCII规则(即RFC 1123标准)对生成的ASCII域名进行检查。
传入参数中的数字和英文不做转码。

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

参数:

参数名 类型 必填 说明
host string 要转换的主机名(host)。每个标签(点分隔的部分)长度不超过63字节。
flag ConversionProcess 转换流程参数,默认值为NO_CONFIGURATION。

返回值:

类型 说明
string 返回转换结果。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码

错误码ID 错误信息
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';

let result = connection.getDnsAscii("www.示例.com", connection.ConversionProcess.NO_CONFIGURATION);
console.info(result);  // 预期结果:www.xn--fsq092h.com
let result = connection.getDnsAscii("www.example.com", connection.ConversionProcess.NO_CONFIGURATION);
console.info(result);  // 预期结果:www.example.com

connection.getDnsUnicode23+

getDnsUnicode(host: string, flag?: ConversionProcess): string

使用Punycode编码方式,将ASCII编码形式的主机名转换为Unicode编码形式,并通过可选的conversionProcess参数控制转换行为。

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

参数:

参数名 类型 必填 说明
host string 要转换的主机名(host)。
flag ConversionProcess 转换流程参数,默认值为NO_CONFIGURATION。

返回值:

类型 说明
string 返回转换结果。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码

错误码ID 错误信息
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';

let result = connection.getDnsUnicode("www.xn--fsq092h.com", connection.ConversionProcess.NO_CONFIGURATION);
console.info(result);  // 预期结果:www.示例.com
let result = connection.getDnsUnicode("www.example.com", connection.ConversionProcess.NO_CONFIGURATION);
console.info(result);  // 预期结果:www.example.com

connection.getSystemNetPortStates24+

getSystemNetPortStates(): Promise<NetPortStatesInfo>

获取系统当前监听的所有TCP、UDP端口信息,以及监听端口进程的PID、UID,支持IPv4和IPv6。

说明:

该接口获取系统当前监听的TCP、UDP端口信息,详细字段包括:

TCP端口字段:本地地址、本地端口、远端地址、远端端口、TCP连接状态、进程PID、进程UID

UDP端口字段:本地地址、本地端口、进程PID 、进程UID

需要权限:ohos.permission.GET_IP_MAC_INFO

模型约束:此接口仅可在Stage模型下使用。

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

返回值:

类型 说明
Promise<NetPortStatesInfo> Promise对象,返回系统当前监听的TCP、UDP端口信息。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.getSystemNetPortStates().then((data: connection.NetPortStatesInfo) => {
  console.info(`Succeeded to get data: ${JSON.stringify(data)}`);
  if (data.tcpPortStatesInfo?.length) {
    data.tcpPortStatesInfo?.forEach(item => {
      console.info(`Succeeded to get Tcp data: ${JSON.stringify(item)}`);
    })
  } else {
    console.info("TcpPortStatesInfo is undefined ");
  }
  if (data.udpPortStatesInfo?.length) {
    data.udpPortStatesInfo?.forEach(item => {
      console.info(`Succeeded to get Udp data: ${JSON.stringify(item)}`);
    })
  } else {
    console.info("UdpPortStatesInfo is undefined ");
  }
}).catch((error: BusinessError) => {
  console.error(`Error fetching getSystemNetPortStates. Code:${error.code}, message:${error.message}`);
});

connection.queryTraceRoute

queryTraceRoute(destination: string, option?: TraceRouteOptions): Promise<TraceRouteInfo[]>

查询网络路由跟踪信息,使用Promise方式作为异步方法。

说明:

应用调用该接口需申请精确位置权限。根据申请位置权限开发指导,调用方需同时申请ohos.permission.APPROXIMATELY_LOCATION和ohos.permission.LOCATION。

起始版本:26.0.0

需要权限:ohos.permission.INTERNET、ohos.permission.ACCESS_NET_TRACE_INFO、ohos.permission.LOCATION和ohos.permission.APPROXIMATELY_LOCATION

模型约束:此接口仅可在Stage模型下使用。

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

参数:

参数名 类型 必填 说明
destination string 目标域名或IP地址,例如www.example.com、8.8.8.8。
option TraceRouteOptions 路由跟踪的选项参数,缺省则使用默认配置。

返回值:

类型 说明
Promise<TraceRouteInfo[]> Promise对象,返回路由跟踪信息数组。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100001 Invalid parameter value.
2100003 Internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

let dest: string = "www.example.com";
let options: connection.TraceRouteOptions = {
    maxJumpNumber: 30,
    packetsType: connection.PacketsType.NETCONN_PACKETS_ICMP
};

connection.queryTraceRoute(dest, options).then((data: connection.TraceRouteInfo[]) => {
    console.info(JSON.stringify(data));
}).catch((err: BusinessError) => {
    console.error(JSON.stringify(err));
});

connection.queryProbeResult

queryProbeResult(destination: string, duration: number): Promise<ProbeResultInfo>

查询网络探测结果。若出现异常(例如断网),导致发送请求失败,则接口会立即返回,不再进行后续探测。本接口使用Promise方式作为异步方法。

说明:

此接口用于对目标主机进行一段持续时间的网络探测,以获取丢包率和RTT信息。

起始版本:26.0.0

需要权限:ohos.permission.INTERNET。

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

模型约束: 此接口仅可在Stage模型下使用。

参数:

参数名 类型 必填 说明
destination string 目标域名或IP地址,例如www.example.com、8.8.8.8。
duration number 探测持续时间,单位为秒,取值范围[1, 1000]。探测间隔为1秒。若未出现异常(例如断网),探测时间到期后返回探测结果。该字段表示探测持续总时长,设置过长可能导致长时间占用应用线程资源。

返回值:

类型 说明
Promise<ProbeResultInfo> Promise对象,返回探测结果信息。

错误码: 以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100001 Invalid parameter value.
2100003 Internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

let dest: string = "www.example.com";
let duration: number = 10;

connection.queryProbeResult(dest, duration).then((data: connection.ProbeResultInfo) => {
    console.info(`LossRate: ${data.lossRate}, RTT: ${data.rtt}`);
}).catch((err: BusinessError) => {
    console.error(JSON.stringify(err));
});

NetConnection

网络连接对象类型。

说明:

(1)设备从无网络状态转变为有网络状态时,将触发netAvailable事件、netCapabilitiesChange事件和netConnectionPropertiesChange事件;

(2)接收到netAvailable事件后,若设备从有网络状态转变为无网络状态,将触发netLost事件;

(3)若未接收到netAvailable事件,则将直接接收到netUnavailable事件;

(4)设备从WiFi网络切换至蜂窝网络时,将先触发netLost事件(WiFi丢失),随后触发netAvailable事件(蜂窝可用)。

register

register(callback: AsyncCallback<void>): void

订阅指定网络状态变化的通知。如需监听特定事件,确保调用on监听事件后再调用register进行注册。

注意:

使用完register接口后需要及时调用unregister取消注册。

需要权限:ohos.permission.GET_NETWORK_INFO

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

参数:

参数名 类型 必填 说明
callback AsyncCallback<void> 回调函数。当订阅指定网络状态变化的通知成功,error为undefined,否则为错误对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100002 Failed to connect to the service.
2100003 System internal error.
2101008 The callback already exists.
2101022 The number of requests exceeded the maximum allowed.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

let netCon: connection.NetConnection = connection.createNetConnection();
netCon.register((error: BusinessError) => {
  console.error(JSON.stringify(error));
});

unregister

unregister(callback: AsyncCallback<void>): void

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

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

参数:

参数名 类型 必填 说明
callback AsyncCallback<void> 回调函数。当取消订阅指定网络状态变化的通知成功,error为undefined,否则为错误对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
401 Parameter error.
2100002 Failed to connect to the service.
2100003 System internal error.
2101007 The callback does not exist.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

let netCon: connection.NetConnection = connection.createNetConnection();
netCon.unregister((error: BusinessError) => {
  console.error(JSON.stringify(error));
});

on('netAvailable')

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

订阅网络可用事件。此接口需在调用register接口之前调用。若无需接收网络状态变化的回调通知,应使用unregister取消订阅默认的网络状态变化通知。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

参数:

参数名 类型 必填 说明
type string 订阅事件,固定为'netAvailable'。
netAvailable:数据网络可用事件。
callback Callback<NetHandle> 回调函数,返回数据网络句柄。

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 创建NetConnection对象。
let netCon: connection.NetConnection = connection.createNetConnection();

// 先使用on接口订阅网络可用事件。
netCon.on('netAvailable', (data: connection.NetHandle) => {
  console.info("Succeeded to get data: " + JSON.stringify(data));
});

// 注册网络状态变化事件。此接口要在调用on后调用。
netCon.register((error: BusinessError) => {
  console.error(JSON.stringify(error));
});

// 使用unregister接口取消订阅网络可用事件。
netCon.unregister((error: BusinessError) => {
  console.error(JSON.stringify(error));
});

on('netBlockStatusChange')

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

订阅网络阻塞状态事件。此接口需要在调用register接口之前调用。若无需接收网络状态变化的回调通知,应使用unregister取消订阅默认的网络状态变化通知。

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

参数:

参数名 类型 必填 说明
type string 订阅事件,固定为'netBlockStatusChange'。
netBlockStatusChange:网络阻塞状态事件。
callback Callback<NetBlockStatusInfo> 回调函数,获取网络阻塞状态信息。

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 创建NetConnection对象。
let netCon: connection.NetConnection = connection.createNetConnection();

// 先使用on接口订阅网络阻塞状态事件。
netCon.on('netBlockStatusChange', (data: connection.NetBlockStatusInfo) => {
  console.info("Succeeded to get data: " + JSON.stringify(data));
});

// 注册网络状态变化事件。此接口要在调用on后调用。
netCon.register((error: BusinessError) => {
  console.error(JSON.stringify(error));
});

// 使用unregister接口取消订阅网络阻塞状态事件。
netCon.unregister((error: BusinessError) => {
  console.error(JSON.stringify(error));
});

on('netCapabilitiesChange')

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

订阅网络能力变化事件。此接口要在register接口调用前调用,不需要网络状态变化回调通知时,使用unregister取消订阅默认网络状态变化的通知。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

参数:

参数名 类型 必填 说明
type string 订阅事件,固定为'netCapabilitiesChange'。
netCapabilitiesChange:网络能力变化事件。
callback Callback<NetCapabilityInfo> 回调函数,返回数据网络句柄(netHandle)和网络的能力信息(netCap)。

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 创建NetConnection对象。
let netCon: connection.NetConnection = connection.createNetConnection();

// 先使用on接口订阅网络能力变化事件。
netCon.on('netCapabilitiesChange', (data: connection.NetCapabilityInfo) => {
  console.info("Succeeded to get data: " + JSON.stringify(data));
});

// 注册网络状态变化事件。此接口要在调用on后调用。
netCon.register((error: BusinessError) => {
  console.error(JSON.stringify(error));
});

// 使用unregister接口取消订阅网络能力变化事件。
netCon.unregister((error: BusinessError) => {
  console.error(JSON.stringify(error));
});

on('netConnectionPropertiesChange')

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

订阅网络连接信息变化事件。此接口要在register接口调用前调用,不需要网络状态变化回调通知时,使用unregister取消订阅默认网络状态变化的通知。

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

参数:

参数名 类型 必填 说明
type string 订阅事件,固定为'netConnectionPropertiesChange'。
netConnectionPropertiesChange:网络连接信息变化事件。
callback Callback<NetConnectionPropertyInfo> 回调函数,获取网络连接属性信息。

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 创建NetConnection对象。
let netCon: connection.NetConnection = connection.createNetConnection();

// 先使用on接口订阅网络连接信息变化事件。
netCon.on('netConnectionPropertiesChange', (data: connection.NetConnectionPropertyInfo) => {
  console.info("Succeeded to get data: " + JSON.stringify(data));
});

// 注册网络状态变化事件。此接口要在调用on后调用。
netCon.register((error: BusinessError) => {
  console.error(JSON.stringify(error));
});

// 使用unregister接口取消订阅网络连接信息变化事件。
netCon.unregister((error: BusinessError) => {
  console.error(JSON.stringify(error));
});

on('netLost')

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

订阅网络丢失事件。此接口要在register接口调用前调用,不需要网络状态变化回调通知时,使用unregister取消订阅默认网络状态变化的通知。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

参数:

参数名 类型 必填 说明
type string 订阅事件,固定为'netLost'。
netLost:网络严重中断或正常断开事件。
callback Callback<NetHandle> 回调函数,数据网络句柄(netHandle)。

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 创建NetConnection对象。
let netCon: connection.NetConnection = connection.createNetConnection();

// 先使用on接口订阅网络丢失事件。
netCon.on('netLost', (data: connection.NetHandle) => {
  console.info("Succeeded to get data: " + JSON.stringify(data));
});

// 注册网络状态变化事件。此接口要在调用on后调用。
netCon.register((error: BusinessError) => {
  console.error(JSON.stringify(error));
});

// 使用unregister接口取消订阅网络丢失事件。
netCon.unregister((error: BusinessError) => {
  console.error(JSON.stringify(error));
});

on('netUnavailable')

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

订阅网络不可用事件。此接口要在register接口调用前调用,不需要网络状态变化回调通知时,使用unregister取消订阅默认网络状态变化的通知。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

参数:

参数名 类型 必填 说明
type string 订阅事件,固定为'netUnavailable'。
netUnavailable:网络不可用事件。
callback Callback<void> 回调函数,无返回结果。

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 创建NetConnection对象。
let netCon: connection.NetConnection = connection.createNetConnection();

// 先使用on接口订阅网络不可用事件。
netCon.on('netUnavailable', () => {
  console.info("Succeeded to get unavailable net event");
});

// 注册网络状态变化事件。此接口要在调用on后调用。
netCon.register((error: BusinessError) => {
  console.error(JSON.stringify(error));
});

// 使用unregister接口取消订阅网络不可用事件。
netCon.unregister((error: BusinessError) => {
  console.error(JSON.stringify(error));
});

NetHandle

网络句柄。

在调用NetHandle的方法之前,需要先获取NetHandle对象。例如可通过getDefaultNet获取系统当前默认网络的网络句柄。

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

属性

名称 类型 只读 可选 说明
netId number 网络ID,取值为0代表没有默认网络,其余有效取值必须大于等于100。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

bindSocket9+

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

将TCPSocket或UDPSocket绑定到当前NetHandle对应的网络。使用callback异步回调。

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

参数:

参数名 类型 必填 说明
socketParam TCPSocket | UDPSocket 待绑定的TCPSocket或UDPSocket对象。
callback AsyncCallback<void> 回调函数。当TCPSocket或UDPSocket成功绑定到当前网络,error为undefined,否则为错误对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection, socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

interface Data {
  message: ArrayBuffer,
  remoteInfo: socket.SocketRemoteInfo
}

  connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  if (netHandle.netId == 0) {
    // 当前没有已连接的网络时,netHandle的netId为0,属于异常场景。可根据实际情况添加处理机制。
  }
  let tcp : socket.TCPSocket = socket.constructTCPSocketInstance();
  let udp : socket.UDPSocket = socket.constructUDPSocketInstance();
  let socketType = "TCPSocket";
  if (socketType == "TCPSocket") {
    tcp.bind({address:"192.168.xxx.xxx",
              port:8080,
              family:1} as socket.NetAddress, (error: Error) => {
      if (error) {
        console.error('bind fail');
        return;
      }
      netHandle.bindSocket(tcp, (error: BusinessError, data: void) => {
        if (error) {
          console.error(`Failed to bind socket. Code:${error.code}, message:${error.message}`);
          return;
        } else {
          console.info(JSON.stringify(data));
        }
      });
    });
  } else {
    let callback: (value: Data) => void = (value: Data) => {
      console.info("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo);
    };
    udp.bind({address:"192.168.xxx.xxx",
              port:8080,
              family:1} as socket.NetAddress, (error: BusinessError) => {
      if (error) {
        console.error(`Failed to bind. Code:${error.code}, message:${error.message}`);
        return;
      }
      udp.on('message', (data: Data) => {
        console.info("Succeeded to get data: " + JSON.stringify(data));
      });
      netHandle.bindSocket(udp, (error: BusinessError, data: void) => {
        if (error) {
          console.error(`Failed to bind socket. Code:${error.code}, message:${error.message}`);
          return;
        } else {
          console.info(JSON.stringify(data));
        }
      });
    });
  }
})

bindSocket9+

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

将TCPSocket或UDPSocket绑定到当前NetHandle对应的网络。使用Promise异步回调。

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

参数:

参数名 类型 必填 说明
socketParam TCPSocket | UDPSocket 待绑定的TCPSocket或UDPSocket对象。

返回值:

类型 说明
Promise<void> Promise对象,无返回结果。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection, socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

interface Data {
  message: ArrayBuffer,
  remoteInfo: socket.SocketRemoteInfo
}

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  if (netHandle.netId == 0) {
    // 当前没有已连接的网络时,netHandle的netId为0,属于异常场景。可根据实际情况添加处理机制。
    return;
  }
  let tcp : socket.TCPSocket = socket.constructTCPSocketInstance();
  let udp : socket.UDPSocket = socket.constructUDPSocketInstance();
  let socketType = "TCPSocket";
  if (socketType == "TCPSocket") {
    tcp.bind({address:"192.168.xxx.xxx",
              port:8080,
              family:1} as socket.NetAddress, (error: Error) => {
      if (error) {
        console.error('bind fail');
        return;
      }
      netHandle.bindSocket(tcp).then(() => {
        console.info("bind socket success");
      }).catch((error: BusinessError) => {
        console.error(`Failed to bind socket. Code:${error.code}, message:${error.message}`);
      });
    });
  } else {
    let callback: (value: Data) => void = (value: Data) => {
      console.info("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo);
    }
    udp.bind({address:"192.168.xxx.xxx",
              port:8080,
              family:1} as socket.NetAddress, (error: BusinessError) => {
      if (error) {
        console.error(`Failed to bind. Code:${error.code}, message:${error.message}`);
        return;
      }
      udp.on('message', (data: Data) => {
        console.info("Succeeded to get data: " + JSON.stringify(data));
      });
      netHandle.bindSocket(udp).then(() => {
        console.info("bind socket success");
      }).catch((error: BusinessError) => {
        console.error(`Failed to bind socket. Code:${error.code}, message:${error.message}`);
      });
    });
  }
});

getAddressesByName

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

使用当前NetHandle对应的网络解析主机名获取到的所有IP地址。使用callback异步回调。

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

需要权限:ohos.permission.INTERNET

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

参数:

参数名 类型 必填 说明
host string 需要解析的主机名。例如:"www.example.com"。
callback AsyncCallback<Array<NetAddress>> 回调函数。当使用对应网络解析主机名成功获取所有IP地址,error为undefined,data为获取到的所有IP地址;否则为错误对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  if (netHandle.netId == 0) {
    // 当前没有已连接的网络时,netHandle的netId为0,属于异常场景。可根据实际情况添加处理机制。
    return;
  }
  let host = "www.example.com";
  netHandle.getAddressesByName(host, (error: BusinessError, data: connection.NetAddress[]) => {
    if (error) {
      console.error(`Failed to get addresses. Code:${error.code}, message:${error.message}`);
      return;
    }
    console.info("Succeeded to get data: " + JSON.stringify(data));
  });
});

getAddressesByName

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

使用当前NetHandle对应的网络解析主机名获取到的所有IP地址。使用Promise异步回调。

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

需要权限:ohos.permission.INTERNET

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

参数:

参数名 类型 必填 说明
host string 需要解析的主机名。例如:"www.example.com"。

返回值:

类型 说明
Promise<Array<NetAddress>> Promise对象,返回所有IP地址。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  if (netHandle.netId == 0) {
    // 当前没有已连接的网络时,netHandle的netId为0,属于异常场景。可根据实际情况添加处理机制。
    return;
  }
  let host = "www.example.com";
  netHandle.getAddressesByName(host).then((data: connection.NetAddress[]) => {
    console.info("Succeeded to get data: " + JSON.stringify(data));
  });
});

getAddressesByNameWithOptions23+

getAddressesByNameWithOptions(host: string, option?: QueryOptions): Promise<Array<NetAddress>>

使用当前NetHandle对应的网络基于指定IP类型进行DNS解析。使用Promise异步回调。

需要权限:ohos.permission.INTERNET

模型约束:此接口仅可在Stage模型下使用。

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

参数:

参数名 类型 必填 说明
host string 需要解析的主机名。例如:"www.example.com"。
option QueryOptions 需要查询的IP类型。

返回值:

类型 说明
Promise<Array<NetAddress>> Promise对象,返回查询到的IP地址。返回值中的port字段固定为0,无需关注。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  if (netHandle.netId == 0) {
    // 当前没有已连接的网络时,netHandle的netId为0,属于异常场景。可根据实际情况添加处理机制。
    return;
  }
  let host = "www.example.com";
  let option: connection.QueryOptions = {
      family: connection.FamilyType.FAMILY_TYPE_IPV4
    };
  netHandle.getAddressesByNameWithOptions(host, option).then((data: connection.NetAddress[]) => {
    console.info(`Succeeded to get data: ${JSON.stringify(data)}`);
  }).catch((err: BusinessError) => {
    console.error(`get ERROR msg: ${JSON.stringify(err)}`)
  });
});

getAddressByName

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

使用当前NetHandle对应的网络解析主机名获取到的第一个IP地址。使用callback异步回调。

需要权限:ohos.permission.INTERNET

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

参数:

参数名 类型 必填 说明
host string 需要解析的主机名。例如:"www.example.com"。
callback AsyncCallback<NetAddress> 回调函数。当使用对应网络解析主机名获取第一个IP地址成功,error为undefined,data为获取的第一个IP地址;否则为错误对象。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  if (netHandle.netId == 0) {
    // 当前没有已连接的网络时,netHandle的netId为0,属于异常场景。可根据实际情况添加处理机制。
    return;
  }
  let host = "www.example.com";
  netHandle.getAddressByName(host, (error: BusinessError, data: connection.NetAddress) => {
    if (error) {
      console.error(`Failed to get address. Code:${error.code}, message:${error.message}`);
      return;
    }
    console.info("Succeeded to get data: " + JSON.stringify(data));
  });
});

getAddressByName

getAddressByName(host: string): Promise<NetAddress>

使用当前NetHandle对应的网络解析主机名获取到的第一个IP地址。使用Promise异步回调。

需要权限:ohos.permission.INTERNET

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

参数:

参数名 类型 必填 说明
host string 需要解析的主机名。例如:"www.example.com"。

返回值:

类型 说明
Promise<NetAddress> Promise对象,返回获取到的第一个IP地址。

错误码:

以下错误码的详细介绍请参见网络连接管理错误码通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Failed to connect to the service.
2100003 System internal error.

示例:

import { connection } from '@kit.NetworkKit';

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  if (netHandle.netId == 0) {
    // 当前没有已连接的网络时,netHandle的netId为0,属于异常场景。可根据实际情况添加处理机制。
    return;
  }
  let host = "www.example.com";
  netHandle.getAddressByName(host).then((data: connection.NetAddress) => {
    console.info("Succeeded to get data: " + JSON.stringify(data));
  });
});

NetCap

网络具体能力。

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

名称 说明
NET_CAPABILITY_MMS 0 表示网络可以访问运营商的MMSC(Multimedia Message Service,多媒体短信服务)发送和接收彩信。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
NET_CAPABILITY_NOT_METERED 11 表示网络流量未被计费。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
NET_CAPABILITY_INTERNET 12 表示该网络应具有访问Internet的能力,此能力由网络提供者设置,但该网络访问Internet的连通性并未被网络管理成功验证。网络连通性可以通过NET_CAPABILITY_VALIDATED和NET_CAPABILITY_CHECKING_CONNECTIVITY判断。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
NET_CAPABILITY_NOT_VPN 15 表示网络不使用VPN(Virtual Private Network,虚拟专用网络)。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
NET_CAPABILITY_VALIDATED 16 表示网络管理通过该网络与华为云地址成功建立连接,此能力由网络管理模块设置。
注意: 网络管理可能会与华为云地址建立连接失败,导致网络能力不具备此标记位,但不完全代表该网络无法访问互联网。另外,对于新完成连接的网络,由于网络正在进行连通性验证,此值可能无法反映真实的验证结果。对此,应用可以通过NET_CAPABILITY_CHECKING_CONNECTIVITY12+检查网络是否正在检测连通性。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
NET_CAPABILITY_PORTAL12+ 17 表示系统发现该网络存在强制网络门户,需要用户登陆认证,该能力由网络管理模块设置。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
NET_CAPABILITY_CHECKING_CONNECTIVITY12+ 31 表示网络管理正在检验当前网络的连通性,此值会在网络连接时设置。当此值存在时,NET_CAPABILITY_VALIDATED的值不准确,连通性检测结束后不再设置,此时可以通过判断NetCap是否包含NET_CAPABILITY_VALIDATED判断连通性。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

NetBearType

网络类型。

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

名称 说明
BEARER_CELLULAR 0 蜂窝网络。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
BEARER_WIFI 1 Wi-Fi网络。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
BEARER_BLUETOOTH12+ 2 蓝牙网络。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
BEARER_ETHERNET 3 以太网网络。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
BEARER_VPN12+ 4 VPN网络。

ConversionProcess23+

ASCII/Unicode转码转换流程参数的枚举。

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

名称 说明
NO_CONFIGURATION 0 仅允许转换已分配的Unicode代码点的域名(Unicode为每个字符分配一个唯一的数字,这个数字就叫做代码点)。
ALLOW_UNASSIGNED 1 允许转换包含未分配Unicode代码点的域名(在Unicode字符集中,并非所有代码点都已分配字符,即未分配Unicode代码点)。
USE_STD3_ASCII_RULES 2 在转换过程中,强制使用STD-3 ASCII规则(即RFC 1123标准)检查生成的ASCII域名。

TcpState24+

TCP状态。

模型约束:此接口仅可在Stage模型下使用。

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

名称 说明
TCP_ESTABLISHED 1 连接已建立,可正常收发数据。
TCP_SYN_SENT 2 客户端发送SYN,等待服务端ACK+SYN(三次握手的第一步)。
TCP_SYN_RECV 3 服务端接收SYN并发送ACK+SYN,等待客户端ACK(三次握手的第二步)。
TCP_FIN_WAIT1 4 主动端发送FIN,等待对方ACK。
TCP_FIN_WAIT2 5 主动端接收FIN的ACK,等待对方ACK。
TCP_TIME_WAIT 6 主动端接收对方FIN并回复ACK,等待2倍最大报文段生存时间后彻底释放。
TCP_CLOSE 7 初始/关闭状态,无连接。
TCP_CLOSE_WAIT 8 被动端接收FIN并发送ACK,等待对方FIN。
TCP_LAST_ACK 9 被动端发送FIN后,等待对方ACK。
TCP_LISTEN 10 服务端监听,等待客户端连接。
TCP_CLOSING 11 双方同时发送FIN,互相等待ACK。

PacketsType

网络探测数据包类型。

起始版本:26.0.0

模型约束: 此接口仅可在Stage模型下使用。

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

名称 说明
NETCONN_PACKETS_ICMP 0 ICMP数据包类型。
NETCONN_PACKETS_UDP 1 UDP数据包类型。

HttpProxy10+

网络代理配置信息

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

名称 类型 只读 可选 说明
host string 代理服务器主机名。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
port number 主机端口。取值范围[0,65535]。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
exclusionList Array<string> 不使用代理的主机名列表,主机名支持域名、IP地址以及通配符形式,详细匹配规则如下:
1、域名匹配规则:
(1)完全匹配:代理服务器主机名只要与列表中的任意一个主机名完全相同,就可以匹配。
(2)包含匹配:代理服务器主机名只要包含列表中的任意一个主机名,就可以匹配。
例如,如果在主机名列表中设置了 “ample.com”,则 “ample.com”、“www.ample.com”、“ample.com:80”都会被匹配,而 “www.example.com”、“ample.com.org”则不会被匹配。
2、IP地址匹配规则:代理服务器主机名只要与列表中的任意一个IP地址完全相同,就可以匹配。
3、域名跟IP地址可以同时添加到列表中进行匹配。
4、单个“*”是唯一有效的通配符,当列表中只有通配符时,将与所有代理服务器主机名匹配,表示禁用代理。通配符只能单独添加,不可以与其他域名、IP地址一起添加到列表中,否则通配符将不生效。
5、匹配规则不区分主机名大小写。
6、匹配主机名时,不考虑http和https等协议前缀。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
username12+ string 使用代理的用户名。
说明: 需同时设置password参数才会生效。
password12+ string 使用代理的用户密码。
说明: 需同时设置username参数才会生效。

Socks5DnsStrategy

SOCKS5代理的DNS查询策略配置信息。

起始版本:26.0.0

模型约束:此接口仅可在Stage模型下使用。

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

名称 说明
SYSTEM_MODE 0 使用SOCKS5代理时,DNS解析由系统执行。
PROXY_MODE 1 使用SOCKS5代理时,DNS解析由代理服务器执行。

Socks5Proxy

SOCKS5代理配置信息。

起始版本:26.0.0

模型约束:此接口仅可在Stage模型下使用。

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

名称 类型 只读 可选 说明
host string 代理服务器主机名。
说明: 当该项为空字符串时,视为未配置SOCKS5代理。
port number 主机端口。取值范围[0, 65535]。
说明: 当参数不在上述取值范围时,视为未配置SOCKS5代理。
username string 使用代理的用户名。
说明: 需同时设置password参数才会生效。
password string 使用代理的用户密码。
说明: 需同时设置username参数才会生效。
dnsStrategy Socks5DnsStrategy 指定DNS解析由系统执行还是由代理服务器执行。
说明: 当此项未指定时,如果host有socks5h://协议前缀,则DNS解析由代理服务器执行,否则DNS解析由系统执行。
exclusionList Array<string> 不使用代理的主机名列表,主机名支持域名、IP地址以及通配符形式,详细匹配规则如下:
1、域名匹配规则:
(1)完全匹配:代理服务器主机名只要与列表中的任意一个主机名完全相同,就可以匹配。
(2)包含匹配:代理服务器主机名只要包含列表中的任意一个主机名,就可以匹配。
例如,如果在主机名列表中设置了“example.com”,则“example.com”、“www.example.com”、“example.com:80”都会被匹配,而 “www.myexample.com”、“myexample.com.org”则不会被匹配。
2、IP地址匹配规则:代理服务器主机名只要与列表中的任意一个IP地址完全相同,就可以匹配。
3、域名跟IP地址可以同时添加到列表中进行匹配。
4、单个“*”是唯一有效的通配符,当列表中只有通配符时,将与所有代理服务器主机名匹配,表示禁用代理。通配符只能单独添加,不可以与其他域名、IP地址一起添加到列表中,否则通配符将不生效。
5、匹配规则不区分主机名大小写。
6、匹配主机名时,不考虑http、https、socks5、socks5h等协议前缀。

NetSpecifier

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

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

名称 类型 只读 可选 说明
netCapabilities NetCapabilities 存储数据网络的传输能力和承载类型。
bearerPrivateIdentifier string 网络标识符,蜂窝网络的标识符是"slot0"(对应SIM卡1)、"slot1"(对应SIM卡2)。从API12开始可以通过传递注册的WLAN热点信息表示应用希望激活的指定的WLAN网络。

示例:

import { connection } from '@kit.NetworkKit';
import { wifiManager } from '@kit.ConnectivityKit';
import { BusinessError } from '@kit.BasicServicesKit';

let config: wifiManager.WifiDeviceConfig = {
  ssid: "TEST",
  preSharedKey: "**********",
  securityType: wifiManager.WifiSecurityType.WIFI_SEC_TYPE_PSK
};
// 通过wifiManager.addCandidateConfig获取注册WLAN的networkId。
wifiManager.addCandidateConfig(config,(error,networkId) => {
 let netConnectionWlan = connection.createNetConnection({
   netCapabilities: {
     bearerTypes: [connection.NetBearType.BEARER_WIFI]
   },
   bearerPrivateIdentifier: `${networkId}`
 });
 netConnectionWlan.register((error: BusinessError) => {
   console.error(JSON.stringify(error));
 });
});

NetCapabilityInfo10+

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

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

名称 类型 只读 可选 说明
netHandle NetHandle 网络句柄。
netCap NetCapabilities 存储数据网络的传输能力和承载类型。

NetCapabilities

网络的能力集。

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

名称 类型 只读 可选 说明
linkUpBandwidthKbps number 上行(设备到网络)带宽,单位(kb/s)。0表示无法评估当前网络带宽。
linkDownBandwidthKbps number 下行(网络到设备)带宽,单位(kb/s)。0表示无法评估当前网络带宽。
networkCap Array<NetCap> 网络具体能力。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
bearerTypes Array<NetBearType> 网络类型。数组里面只包含了一种网络类型。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

NetConnectionPropertyInfo11+

网络连接信息。

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

属性

名称 类型 只读 可选 说明
netHandle NetHandle 网络句柄。
connectionProperties ConnectionProperties 网络连接信息。

NetBlockStatusInfo11+

获取网络状态信息。

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

属性

名称 类型 只读 可选 说明
netHandle NetHandle 网络句柄。
blocked boolean 标识当前网络是否是堵塞状态。true:标识当前网络是堵塞状态;false:标识当前网络不是堵塞状态。

ConnectionProperties

网络连接信息。

注意:

linkAddresses、routes和dnses可能为空,需要做好空值保护,建议使用前先判断对象是否存在。

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

名称 类型 只读 可选 说明
interfaceName string 网卡名称。
domains string 域名。
linkAddresses Array<LinkAddress> 链路信息。
routes Array<RouteInfo> 路由信息。
dnses Array<NetAddress> 网络地址,参考NetAddress
mtu number 最大传输单元。
isIPv4LinkValid24+ boolean 当前网络的IPv4是否可用。true:当IPv4地址有效,且存在IPv4的默认路由时,认为IPv4可用;false:当IPv4地址无效,或者不存在IPv4的默认路由时,认为IPv4不可用。
模型约束: 此接口仅可在Stage模型下使用。
isIPv6LinkValid24+ boolean 当前网络的IPv6是否可用。true:当IPv6地址有效,且存在IPv6的默认路由时,认为IPv6可用;false:当IPv6地址无效,或者不存在IPv6的默认路由时,认为IPv6不可用。
模型约束: 此接口仅可在Stage模型下使用。

RouteInfo

网络路由信息。

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

名称 类型 只读 可选 说明
interface string 网卡名称。
destination LinkAddress 目的地址。
gateway NetAddress 网关地址。
hasGateway boolean 是否有网关。true:有网关;false:无网关。
isDefaultRoute boolean 是否为默认路由。true:默认路由;false:非默认路由。
说明: IPv4默认路由是指目的地址为0.0.0.0/0的路由;IPv6默认路由是指目的地址为::/0的路由。
isExcludedRoute20+ boolean 是否为排除路由。true表示排除路由,false表示非排除路由,默认值为false。

LinkAddress

网络链路信息。

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

名称 类型 只读 可选 说明
address NetAddress 链路地址。
prefixLength number 链路地址前缀的长度。

NetAddress

网络地址。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

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

名称 类型 只读 可选 说明
address string 地址。
family number IPv4 = 1,IPv6 = 2,默认IPv4。
port number 端口,取值范围[0, 65535],默认值为0。

HttpRequest

type HttpRequest = http.HttpRequest

定义一个HTTP请求,可以通过http.createHttp创建。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

类型 说明
http.HttpRequest 定义HTTP请求任务。在调用HttpRequest提供的API之前。

TCPSocket

type TCPSocket = socket.TCPSocket

定义一个TCPSocket对象,可以通过socket.constructTCPSocketInstance创建。

系统能力:SystemCapability.Communication.NetStack

类型 说明
socket.TCPSocket 定义一个TCPSocket连接。

UDPSocket

type UDPSocket = socket.UDPSocket

定义一个UDPSocket对象,可以通过socket.constructUDPSocketInstance创建。

系统能力:SystemCapability.Communication.NetStack

类型 说明
socket.UDPSocket 定义UDPSocket连接。

NetIpMacInfo22+

IP邻居表条目信息。

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

名称 类型 只读 可选 说明
ipAddress NetAddress IP地址相关信息。
iface string 网卡名。
macAddress string MAC地址。

ProtocolType23+

网络协议类型的枚举。

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

名称 说明
PROTO_TYPE_TCP 6 TCP网络协议。
PROTO_TYPE_UDP 17 UDP网络协议。

TcpNetPortStatesInfo24+

TCP端口状态信息。

模型约束:此接口仅可在Stage模型下使用。

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

名称 类型 只读 可选 说明
tcpLocalIp string TCP网络本地IP地址。
tcpLocalPort number TCP网络本地端口,取值范围[0, 65535]。
tcpRemoteIp string TCP网络远程IP地址。
tcpRemotePort number TCP网络远程端口,取值范围[0, 65535]。
tcpUid number 监听该TCP端口的用户UID。
tcpPid number 监听该TCP端口的进程PID。
tcpState TcpState TCP网络状态。

UdpNetPortStatesInfo24+

UDP端口状态信息。

模型约束:此接口仅可在Stage模型下使用。

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

名称 类型 只读 可选 说明
udpLocalIp string UDP网络本地IP地址。
udpLocalPort number UDP网络本地端口,取值范围[0, 65535]。
udpUid number 监听该UDP端口的用户UID。
udpPid number 监听该UDP端口的进程PID。

NetPortStatesInfo24+

系统当前监听的TCP、UDP端口信息。

模型约束:此接口仅可在Stage模型下使用。

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

名称 类型 只读 可选 说明
tcpPortStatesInfo Array<TcpNetPortStatesInfo> 系统当前监听的TCP信息。
udpPortStatesInfo Array<UdpNetPortStatesInfo> 系统当前监听的UDP信息。

TraceRouteOptions

路由跟踪的选项。

起始版本:26.0.0

模型约束: 此接口仅可在Stage模型下使用。

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

名称 类型 只读 可选 说明
maxJumpNumber number 最大跳数,取值范围[1, 30],默认值为30。
packetsType PacketsType 探测使用的数据包类型,默认为NETCONN_PACKETS_ICMP。

TraceRouteInfo

路由跟踪信息。

起始版本:26.0.0

模型约束: 此接口仅可在Stage模型下使用。

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

名称 类型 只读 可选 说明
jumpNo number 跳数序号。
address string 该跳的IP地址。
rtt number[] 往返时间(RTT),单位为毫秒。每一跳发送5个探测报文,数组元素依次为这些探测报文RTT中的最小值、平均值、最大值、标准差。

ProbeResultInfo

网络探测结果信息。

起始版本:26.0.0

模型约束: 此接口仅可在Stage模型下使用。

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

名称 类型 只读 可选 说明
lossRate number 丢包率,取值范围[0, 100]。例如,100表示100%丢包,50表示50%丢包。
rtt number[] 往返时间(RTT),单位为毫秒。对目的主机发送多个探测报文,探测报文数量由queryProbeResult接口中duration参数决定。数组元素依次为这些探测报文RTT中最小值、平均值、最大值、标准差。