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

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

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

导入模块

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 指定网络的各项特征,不指定或为undefined时关注默认网络。
timeout number 获取netSpecifier指定的网络时的超时时间,仅netSpecifier存在时生效,undefined时默认值为0。

返回值:

类型 说明
NetConnection 所关注的网络的句柄。

示例:

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

// 关注默认网络, 不需要传参
let netConnection = connection.createNetConnection();

// 关注蜂窝网络,需要传入相关网络特征,timeout参数未传入说明未使用超时时间,此时timeout为0
let netConnectionCellular = connection.createNetConnection({
  netCapabilities: {
    bearerTypes: [connection.NetBearType.BEARER_CELLULAR]
  }
});

connection.getDefaultNet

getDefaultNet(callback: AsyncCallback<NetHandle>): void

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

需要权限:ohos.permission.GET_NETWORK_INFO

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

参数:

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

错误码:

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

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';

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>

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

需要权限:ohos.permission.GET_NETWORK_INFO

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

返回值:

类型 说明
Promise<NetHandle> 以Promise形式返回默认激活的数据网络。

错误码:

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

示例:

import connection from '@ohos.net.connection';
connection.getDefaultNet().then((data: connection.NetHandle) => {
  console.info("Succeeded to get data: " + JSON.stringify(data));
});

connection.getDefaultNetSync9+

getDefaultNetSync(): NetHandle

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

需要权限:ohos.permission.GET_NETWORK_INFO

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

返回值:

类型 说明
NetHandle 以同步方式返回默认激活的数据网络。

错误码:

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

示例:

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

let netHandle = connection.getDefaultNetSync();

connection.setAppHttpProxy11+

setAppHttpProxy(httpProxy: HttpProxy): void;

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

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

参数:

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

错误码:

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

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';

let exclusionStr = "192.168,baidu.com";
let exclusionArray = exclusionStr.split(',');
connection.setAppHttpProxy({
  host: "192.168.xx.xxx",
  port: 8080,
  exclusionList: exclusionArray
} as connection.HttpProxy);

预置锁定证书PIN:

证书PIN是对证书文件用sha256算法计算出的hash值。 对于证书server.pem, 可以用如下openssl命令计算它的PIN:

cat server.pem \
| sed -n '/-----BEGIN/,/-----END/p' \
| openssl x509 -noout -pubkey \
| openssl pkey -pubin -outform der \
| openssl dgst -sha256 -binary \
| openssl enc -base64

预置应用级证书:

直接把证书原文件预置在APP中。目前支持crt和pem格式的证书文件。

预置JSON配置文件:

预置的证书与网络服务器的对应关系通过JSON配置。 配置文件在APP中的路径是:src/main/resources/base/profile/network_config.json

JSON配置文件:

证书锁定的配置例子如下:

{
  "network-security-config": {	
	  "domain-config": {
		  "domains": [
        {
          "include-subdomains": true,
          "name": "server.com"
        }
      ],
      "pin-set": {
        "expiration": "2024-11-08",
        "pin": [
          {
            "digest-algorithm": "sha256",
            "digest": "FEDCBA987654321"
          }
        ]
      }
    }
  }
}

应用级证书的配置例子如下:

{
  "network-security-config": {
    "base-config": {  
      "trust-anchors": [                         
        {"certificates": "/etc/security/certificates"}
      ]
    },
    "domain-config": {
      "domains": [
        {
          "include-subdomains": true,
          "name": "example.com"
        }
      ],
      "trust-anchors": [
        {"certificates": "/data/storage/el1/bundle/entry/resources/resfile"}
      ]
    }
  }
}

各个字段含义:

network-security-config(object:网络安全配置)

可包含0或者1个base-config

必须包含1个domain-config

base-config(object:指示应用程序范围的安全配置)

必须包含1个trust-anchors

domain-config(array:指示每个域的安全配置)

可以包含任意个item

item必须包含1个domain

item可以包含0或者1个trust-anchors

item可包含0个或者1个pin-set

trust-anchors(array:受信任的CA)

可以包含任意个item

item必须包含1个certificates(string:CA证书路径)

domain(array:域)

可以包含任意个item

item必须包含1个name(string:指示域名)

item可以包含0或者1个include-subdomains(boolean:指示规则是否适用于子域)

pin-set(object:证书PIN设置)

必须包含1个pin

可以包含0或者1个expiration(string:指示证书PIN的过期时间)

pin(array:证书PIN)

可以包含任意个item

item必须包含1个digest-algorithm(string:指示用于生成pin的摘要算法)

item必须包含1个digest(string:指示公钥PIN)

connection.getDefaultHttpProxy10+

getDefaultHttpProxy(callback: AsyncCallback<HttpProxy>): void

获取网络默认的代理配置信息。 如果设置了全局代理,则会返回全局代理配置信息。如果进程使用setAppNet绑定到指定NetHandle对应的网络,则返回NetHandle对应网络的代理配置信息。在其它情况下,将返回默认网络的代理配置信息。 使用callback方式作为异步方法。

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

参数:

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

错误码:

错误码ID 错误信息
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';

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.log("Succeeded to get data" + JSON.stringify(data));
});

connection.getDefaultHttpProxy10+

getDefaultHttpProxy(): Promise<HttpProxy>;

获取网络默认的代理配置信息。 如果设置了全局代理,则会返回全局代理配置信息。如果进程使用setAppNet绑定到指定NetHandle对应的网络,则返回NetHandle对应网络的代理配置信息。在其它情况下,将返回默认网络的代理配置信息。 使用Promise方式作为异步方法。

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

返回值:

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

错误码:

错误码ID 错误信息
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';

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 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';

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 错误信息
401 Parameter error.
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';

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 错误信息
401 Parameter error.
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

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

let netHandle = connection.getAppNetSync();

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到指定网络时,error为undefined,否则为错误对象。

错误码:

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

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';

connection.getDefaultNet((error: BusinessError, netHandle: connection.NetHandle) => {
  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));
  });
});

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.

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  connection.setAppNet(netHandle).then(() => {
    console.log("success");
  }).catch((error: BusinessError) => {
    console.log(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为激活的数据网络列表;否则为错误对象。

错误码:

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

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';

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.
401 Parameter error.
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

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

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.
401 Parameter error.
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

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

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 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  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 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

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

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  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 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

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

let netHandle = connection.getDefaultNetSync();
let connectionproperties = connection.getConnectionPropertiesSync(netHandle);

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

错误码:

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

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  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));
  })
});

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.

示例:

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

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

connection.getNetCapabilitiesSync10+

getNetCapabilitiesSync(netHandle: NetHandle): NetCapabilities

获取netHandle对应的网络的能力信息,使用同步方式返回。

需要权限:ohos.permission.GET_NETWORK_INFO

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

参数:

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

返回值:

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

错误码:

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

示例:

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

let netHandle = connection.getDefaultNetSync();
let getNetCapabilitiesSync = connection.getNetCapabilitiesSync(netHandle);

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.
401 Parameter error.
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';

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

connection.isDefaultNetMetered9+

isDefaultNetMetered(): Promise<boolean>

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

需要权限:ohos.permission.GET_NETWORK_INFO

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

返回值:

类型 说明
Promise<boolean> 以Promise形式返回,当前网络上的数据流量使用被计量true。

错误码:

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

示例:

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

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

connection.isDefaultNetMeteredSync10+

isDefaultNetMeteredSync(): boolean

检查当前网络上的数据流量使用是否被计量,使用同步方式返回。

需要权限:ohos.permission.GET_NETWORK_INFO

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

返回值:

类型 说明
boolean 当前网络上的数据流量使用被计量true。

错误码:

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

示例:

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

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。

错误码:

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

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';

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

connection.hasDefaultNet

hasDefaultNet(): Promise<boolean>

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

需要权限:ohos.permission.GET_NETWORK_INFO

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

返回值:

类型 说明
Promise<boolean> 以Promise形式返回,默认数据网络被激活返回true。

错误码:

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

示例:

import connection from '@ohos.net.connection';
connection.hasDefaultNet().then((data: boolean) => {
  console.log('data: ' + data);
});

connection.hasDefaultNetSync10+

hasDefaultNetSync(): boolean

检查默认数据网络是否被激活,使用同步方式返回接口,如果被激活则返回true。

需要权限:ohos.permission.GET_NETWORK_INFO

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

返回值:

类型 说明
boolean 默认数据网络被激活返回true。

错误码:

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

示例:

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

let isDefaultNet = connection.hasDefaultNetSync();

connection.reportNetConnected

reportNetConnected(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 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  connection.reportNetConnected(netHandle, (error: BusinessError) => {
    console.log(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对象。

错误码:

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

示例:

import connection from '@ohos.net.connection';
connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  connection.reportNetConnected(netHandle).then(() => {
    console.log(`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 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

import connection from '@ohos.net.connection';
connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  connection.reportNetDisconnected(netHandle).then( () => {
    console.log(`report success`);
  });
});

connection.reportNetDisconnected

reportNetDisconnected(netHandle: NetHandle): Promise<void>

向网络管理报告网络处于不可用状态,使用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.

示例:

import connection from '@ohos.net.connection';
connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  connection.reportNetDisconnected(netHandle).then( () => {
    console.log(`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 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from "@ohos.base";
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 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

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

connection.addCustomDnsRule11+

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

为当前应用程序添加自定义host和对应的ip地址的映射,使用callback方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力: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 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';
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方式作为异步方法。

需要权限:ohos.permission.INTERNET

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

参数:

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

返回值:

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

错误码:

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

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';
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方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力: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 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';
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方式作为异步方法。

需要权限:ohos.permission.INTERNET

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

参数:

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

返回值:

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

错误码:

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

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';
connection.removeCustomDnsRule("xxxx").then(() => {
    console.log("success");
}).catch((error: BusinessError) => {
    console.log(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 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';
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对象。

错误码:

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

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';
connection.clearCustomDnsRules().then(() => {
    console.log("success");
}).catch((error: BusinessError) => {
    console.log(JSON.stringify(error));
})

NetConnection

网络连接的句柄。

说明: 设备从无网络到有网络会触发netAvailable事件、netCapabilitiesChange事件和netConnectionPropertiesChange事件; 设备从有网络到无网络状态会触发netLost事件; 设备从WiFi到蜂窝会触发netLost事件(WiFi丢失)之后触发 netAvaliable事件(蜂窝可用);

register

register(callback: AsyncCallback<void>): void

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

需要权限:ohos.permission.GET_NETWORK_INFO

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

参数:

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

错误码:

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

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from "@ohos.base";
let netCon: connection.NetConnection = connection.createNetConnection();
netCon.register((error: BusinessError) => {
  console.log(JSON.stringify(error));
});

unregister

unregister(callback: AsyncCallback<void>): void

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

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

参数:

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

错误码:

错误码ID 错误信息
201 Permission denied.
401 Parameter error.
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.
2101007 The callback is not exists.

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from "@ohos.base";
let netCon: connection.NetConnection = connection.createNetConnection();
netCon.unregister((error: BusinessError) => {
  console.log(JSON.stringify(error));
});

on('netAvailable')

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

订阅网络可用事件。

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

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

参数:

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

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from "@ohos.base";

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

// 先使用register接口注册订阅事件
netCon.register((error: BusinessError) => {
  console.log(JSON.stringify(error));
});

// 订阅网络可用事件。调用register后,才能接收到此事件通知
netCon.on('netAvailable', (data: connection.NetHandle) => {
  console.info("Succeeded to get data: " + JSON.stringify(data));
});

// 使用unregister接口取消订阅
netCon.unregister((error: BusinessError) => {
  console.log(JSON.stringify(error));
});

on('netBlockStatusChange')

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

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

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

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

参数:

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

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from "@ohos.base";

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

// 先使用register接口注册订阅事件
netCon.register((error: BusinessError) => {
  console.log(JSON.stringify(error));
});

// 订阅网络阻塞状态事件。调用register后,才能接收到此事件通知
netCon.on('netBlockStatusChange', (data: connection.NetBlockStatusInfo) => {
  console.info("Succeeded to get data: " + JSON.stringify(data));
});

// 使用unregister接口取消订阅
netCon.unregister((error: BusinessError) => {
  console.log(JSON.stringify(error));
});

on('netCapabilitiesChange')

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

订阅网络能力变化事件。

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

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

参数:

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

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from "@ohos.base";

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

// 先使用register接口注册订阅事件
netCon.register((error: BusinessError) => {
  console.log(JSON.stringify(error));
});

// 订阅网络能力变化事件。调用register后,才能接收到此事件通知
netCon.on('netCapabilitiesChange', (data: connection.NetCapabilityInfo) => {
  console.info("Succeeded to get data: " + JSON.stringify(data));
});

// 使用unregister接口取消订阅
netCon.unregister((error: BusinessError) => {
  console.log(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 '@ohos.net.connection';
import { BusinessError } from "@ohos.base";

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

// 先使用register接口注册订阅事件
netCon.register((error: BusinessError) => {
  console.log(JSON.stringify(error));
});

// 订阅网络连接信息变化事件。调用register后,才能接收到此事件通知
netCon.on('netConnectionPropertiesChange', (data: connection.NetConnectionPropertyInfo) => {
  console.info("Succeeded to get data: " + JSON.stringify(data));
});

// 使用unregister接口取消订阅
netCon.unregister((error: BusinessError) => {
  console.log(JSON.stringify(error));
});

on('netLost')

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

订阅网络丢失事件。

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

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

参数:

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

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from "@ohos.base";

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

// 先使用register接口注册订阅事件
netCon.register((error: BusinessError) => {
  console.log(JSON.stringify(error));
});

// 订阅网络丢失事件。调用register后,才能接收到此事件通知
netCon.on('netLost', (data: connection.NetHandle) => {
  console.info("Succeeded to get data: " + JSON.stringify(data));
});

// 使用unregister接口取消订阅
netCon.unregister((error: BusinessError) => {
  console.log(JSON.stringify(error));
});

on('netUnavailable')

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

订阅网络不可用事件。

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

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

参数:

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

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from "@ohos.base";

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

// 先使用register接口注册订阅事件
netCon.register((error: BusinessError) => {
  console.log(JSON.stringify(error));
});

// 订阅网络不可用事件。调用register后,才能接收到此事件通知
netCon.on('netUnavailable', () => {
  console.info("Succeeded to get unavailable net event");
});

// 使用unregister接口取消订阅
netCon.unregister((error: BusinessError) => {
  console.log(JSON.stringify(error));
});

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成功绑定到当前网络,error为undefined,否则为错误对象。

错误码:

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

示例:

import socket from "@ohos.net.socket";
import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';

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

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  let tcp = socket.constructTCPSocketInstance();
  let udp = 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.log('bind fail');
        return;
      }
      netHandle.bindSocket(tcp, (error: BusinessError, data: void) => {
        if (error) {
          console.error(`Failed to bind socket. Code:${error.code}, message:${error.message}`);
        } else {
          console.info(JSON.stringify(data));
        }
      });
    });
  } else {
    let callback: (value: Data) => void = (value: Data) => {
      console.log("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}`);
        } else {
          console.info(JSON.stringify(data));
        }
      });
    });
  }
});

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.

示例:

import socket from "@ohos.net.socket";
import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';
interface Data {
  message: ArrayBuffer,
  remoteInfo: socket.SocketRemoteInfo
}

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  let tcp = socket.constructTCPSocketInstance();
  let udp = 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.log('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.log("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

使用对应网络解析主机名以获取所有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 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from "@ohos.base";

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  let host = "xxxx";
  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>>

使用对应网络解析主机名以获取所有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.

示例:

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

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

getAddressByName

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

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

需要权限:ohos.permission.INTERNET

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

参数:

参数名 类型 必填 说明
host string 需要解析的主机名。
callback AsyncCallback<NetAddress> 回调函数。当使用对应网络解析主机名获取第一个IP地址成功,error为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.

示例:

import connection from '@ohos.net.connection';
import { BusinessError } from "@ohos.base";

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  let host = "xxxx";
  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>

使用对应网络解析主机名以获取第一个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.

示例:

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

connection.getDefaultNet().then((netHandle: connection.NetHandle) => {
  let host = "xxxx";
  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,多媒体短信服务)发送和接收彩信。
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 以太网网络。

HttpProxy10+

网络代理配置信息

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

名称 类型 必填 说明
host string 代理服务器主机名。
port number 主机端口。
exclusionList Array 不使用代理的主机名列表,主机名支持域名、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等协议前缀。

NetSpecifier

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

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

名称 类型 必填 说明
netCapabilities NetCapabilities 存储数据网络的传输能力和承载类型。
bearerPrivateIdentifier string 网络标识符,Wi-Fi网络的标识符是"wifi",蜂窝网络的标识符是"slot0"(对应SIM卡1)。

NetCapabilityInfo10+

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

系统能力: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> 网络具体能力。
bearerTypes Array<NetBearType> 网络类型。数组里面只包含了一种具体的网络类型。

NetConnectionPropertyInfo11+

网络连接信息

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

属性

名称 类型 必填 说明
netHandle NetHandle 数据网络句柄(netHandle)。
connectionProperties ConnectionProperties 网络连接属性。

NetBlockStatusInfo11+

获取网络状态信息

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

属性

名称 类型 必填 说明
netHandle NetHandle 数据网络句柄(netHandle)。
blocked boolean 标识当前网络是否是堵塞状态

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]。