1# @ohos.net.ethernet (以太网连接管理) 2 3以太网连接管理主要提供有线网络能力,提供设置有线网络的IP地址,子网掩码,网关,DNS,代理等信息 4 5> **说明:** 6> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 7 8## 导入模块 9 10```ts 11import ethernet from '@ohos.net.ethernet' 12``` 13 14## ethernet.setIfaceConfig<sup>9+</sup> 15 16setIfaceConfig(iface: string, ic: InterfaceConfiguration, callback: AsyncCallback\<void>): void 17 18设置网络接口配置信息,使用callback方式作为异步方法。 19 20**系统接口**:此接口为系统接口。 21 22**需要权限**:ohos.permission.CONNECTIVITY_INTERNAL 23 24**系统能力**:SystemCapability.Communication.NetManager.Ethernet 25 26**参数:** 27 28| 参数名 | 类型 | 必填 | 说明 | 29| -------- | ------------------------------------------------- | ---- | ------------------------------------------ | 30| iface | string | 是 | 网络接口名 | 31| ic | [InterfaceConfiguration](#interfaceconfiguration9) | 是 | 要设置的网络接口配置信息 | 32| callback | AsyncCallback\<void> | 是 | 回调函数,成功无返回,失败返回对应错误码。 | 33 34**错误码:** 35 36| 错误码ID | 错误信息 | 37| ------- | ----------------------------------------| 38| 201 | Permission denied. | 39| 202 | Non-system applications use system APIs. | 40| 401 | Parameter error. | 41| 2200001 | Invalid parameter value. | 42| 2200002 | Operation failed. Cannot connect to service.| 43| 2200003 | System internal error. | 44| 2201004 | Invalid Ethernet profile. | 45| 2201005 | Device information does not exist. | 46| 2201006 | Ethernet device not connected. | 47| 2201007 | Ethernet failed to write user configuration information. | 48 49**示例:** 50 51```ts 52import ethernet from '@ohos.net.ethernet' 53import { BusinessError } from '@ohos.base' 54 55let config: ethernet.InterfaceConfiguration = { 56 mode: 0, 57 ipAddr: "192.168.xx.xxx", 58 route: "192.168.xx.xxx", 59 gateway: "192.168.xx.xxx", 60 netMask: "255.255.255.0", 61 dnsServers: "1.1.1.1" 62}; 63 64ethernet.setIfaceConfig("eth0", config, (error: BusinessError) => { 65 if (error) { 66 console.log("setIfaceConfig callback error = " + JSON.stringify(error)); 67 } else { 68 console.log("setIfaceConfig callback ok"); 69 } 70}); 71``` 72 73## ethernet.setIfaceConfig<sup>9+</sup> 74 75setIfaceConfig(iface: string, ic: InterfaceConfiguration): Promise\<void> 76 77设置网络接口配置信息,使用Promise方式作为异步方法。 78 79**系统接口**:此接口为系统接口。 80 81**需要权限**:ohos.permission.CONNECTIVITY_INTERNAL 82 83**系统能力**:SystemCapability.Communication.NetManager.Ethernet 84 85**参数:** 86 87| 参数名 | 类型 | 必填 | 说明 | 88| ------ | ------------------------------------------------- | ---- | ------------------------ | 89| iface | string | 是 | 接口名 | 90| ic | [InterfaceConfiguration](#interfaceconfiguration9) | 是 | 要设置的网络接口配置信息 | 91 92**返回值:** 93 94| 类型 | 说明 | 95| ------------------- | ----------------------------------------------------------- | 96| Promise\<void> | 以Promise形式返回执行结果。成功无返回,失败返回对应错误码。 | 97 98**错误码:** 99 100| 错误码ID | 错误信息 | 101| ------- | ----------------------------------------| 102| 201 | Permission denied. | 103| 202 | Non-system applications use system APIs. | 104| 401 | Parameter error. | 105| 2200001 | Invalid parameter value. | 106| 2200002 | Operation failed. Cannot connect to service.| 107| 2200003 | System internal error. | 108| 2201004 | Invalid Ethernet profile. | 109| 2201005 | Device information does not exist. | 110| 2201006 | Ethernet device not connected. | 111| 2201007 | Ethernet failed to write user configuration information. | 112 113**示例:** 114 115```ts 116import ethernet from '@ohos.net.ethernet' 117import { BusinessError } from '@ohos.base' 118 119let config: ethernet.InterfaceConfiguration = { 120 mode: 0, 121 ipAddr: "192.168.xx.xxx", 122 route: "192.168.xx.xxx", 123 gateway: "192.168.xx.xxx", 124 netMask: "255.255.255.0", 125 dnsServers: "1.1.1.1" 126}; 127 128const setConfigPromise = ethernet.setIfaceConfig("eth0", config); 129 130setConfigPromise.then(() => { 131 console.log("setIfaceConfig promise ok"); 132}).catch((error: BusinessError) => { 133 console.log("setIfaceConfig promise error = " + JSON.stringify(error)); 134}); 135``` 136 137## ethernet.getIfaceConfig<sup>9+</sup> 138 139getIfaceConfig(iface: string, callback: AsyncCallback\<InterfaceConfiguration>): void 140 141获取指定网络接口信息,使用callback方式作为异步方法。 142 143**系统接口**:此接口为系统接口。 144 145**需要权限**:ohos.permission.GET_NETWORK_INFO 146 147**系统能力**:SystemCapability.Communication.NetManager.Ethernet 148 149**参数:** 150 151| 参数名 | 类型 | 必填 | 说明 | 152| -------- | ----------------------------------------------- | ----- | ------------ | 153| iface | string | 是 | 指定网络接口 | 154| callback | AsyncCallback\<[InterfaceConfiguration](#interfaceconfiguration)> | 是 | 回调函数,返回指定网络接口信息 | 155 156**错误码:** 157 158| 错误码ID | 错误信息 | 159| ------- | ----------------------------------------| 160| 201 | Permission denied. | 161| 202 | Non-system applications use system APIs. | 162| 401 | Parameter error. | 163| 2200001 | Invalid parameter value. | 164| 2200002 | Operation failed. Cannot connect to service.| 165| 2200003 | System internal error. | 166| 2201005 | Device information does not exist. | 167 168**示例:** 169 170```ts 171import ethernet from '@ohos.net.ethernet' 172import { BusinessError } from '@ohos.base' 173 174ethernet.getIfaceConfig("eth0", (error: BusinessError, value: ethernet.InterfaceConfiguration) => { 175 if (error) { 176 console.log("getIfaceConfig callback error = " + JSON.stringify(error)); 177 } else { 178 console.log("getIfaceConfig callback mode = " + JSON.stringify(value.mode)); 179 console.log("getIfaceConfig callback ipAddr = " + JSON.stringify(value.ipAddr)); 180 console.log("getIfaceConfig callback route = " + JSON.stringify(value.route)); 181 console.log("getIfaceConfig callback gateway = " + JSON.stringify(value.gateway)); 182 console.log("getIfaceConfig callback netMask = " + JSON.stringify(value.netMask)); 183 console.log("getIfaceConfig callback dnsServers = " + JSON.stringify(value.dnsServers)); 184 } 185}); 186``` 187 188## ethernet.getIfaceConfig<sup>9+</sup> 189 190getIfaceConfig(iface: string): Promise\<InterfaceConfiguration> 191 192获取指定网络接口信息,使用Promise方式作为异步方法。 193 194**系统接口**:此接口为系统接口。 195 196**需要权限**:ohos.permission.GET_NETWORK_INFO 197 198**系统能力**:SystemCapability.Communication.NetManager.Ethernet 199 200**参数:** 201 202| 参数名 | 类型 | 必填 | 说明 | 203| -------- | --------------------------------------- | ---- | ------------ | 204| iface | string | 是 | 指定网络接口 | 205 206**返回值:** 207 208| 类型 | 说明 | 209| --------------------------------- | ---------------------------------- | 210| Promise\<[InterfaceConfiguration](#interfaceconfiguration)> | 以Promise形式返回接口信息。 | 211 212**错误码:** 213 214| 错误码ID | 错误信息 | 215| ------- | ----------------------------------------| 216| 201 | Permission denied. | 217| 202 | Non-system applications use system APIs. | 218| 401 | Parameter error. | 219| 2200001 | Invalid parameter value. | 220| 2200002 | Operation failed. Cannot connect to service.| 221| 2200003 | System internal error. | 222| 2201005 | Device information does not exist. | 223 224**示例:** 225 226```ts 227import ethernet from '@ohos.net.ethernet' 228import { BusinessError } from '@ohos.base' 229 230ethernet.getIfaceConfig("eth0").then((data: ethernet.InterfaceConfiguration) => { 231 console.log("getIfaceConfig promise mode = " + JSON.stringify(data.mode)); 232 console.log("getIfaceConfig promise ipAddr = " + JSON.stringify(data.ipAddr)); 233 console.log("getIfaceConfig promise route = " + JSON.stringify(data.route)); 234 console.log("getIfaceConfig promise gateway = " + JSON.stringify(data.gateway)); 235 console.log("getIfaceConfig promise netMask = " + JSON.stringify(data.netMask)); 236 console.log("getIfaceConfig promise dnsServers = " + JSON.stringify(data.dnsServers)); 237}).catch((error: BusinessError) => { 238 console.log("getIfaceConfig promise error = " + JSON.stringify(error)); 239}); 240``` 241 242## ethernet.isIfaceActive<sup>9+</sup> 243 244isIfaceActive(iface: string, callback: AsyncCallback\<number>): void 245 246判断接口是否已激活,使用callback方式作为异步方法。 247 248**系统接口**:此接口为系统接口。 249 250**需要权限**:ohos.permission.GET_NETWORK_INFO 251 252**系统能力**:SystemCapability.Communication.NetManager.Ethernet 253 254**参数:** 255 256| 参数名 | 类型 | 必填 | 说明 | 257| -------- | --------------------------- | ---- | -------------------------------------------------- | 258| iface | string | 是 | 接口名。为空时代表查询是否存在激活接口 | 259| callback | AsyncCallback\<number> | 是 | 回调函数,已激活:1,未激活:0,其他为获取失败错误码。 | 260 261**错误码:** 262 263| 错误码ID | 错误信息 | 264| ------- | ----------------------------------------| 265| 201 | Permission denied. | 266| 202 | Non-system applications use system APIs. | 267| 401 | Parameter error. | 268| 2200001 | Invalid parameter value. | 269| 2200002 | Operation failed. Cannot connect to service.| 270| 2200003 | System internal error. | 271| 2201005 | Device information does not exist. | 272 273**示例:** 274 275```ts 276import ethernet from '@ohos.net.ethernet' 277import { BusinessError } from '@ohos.base' 278 279ethernet.isIfaceActive("eth0", (error: BusinessError, value: number) => { 280 if (error) { 281 console.log("whether2Activate callback error = " + JSON.stringify(error)); 282 } else { 283 console.log("whether2Activate callback = " + JSON.stringify(value)); 284 } 285}); 286``` 287 288## ethernet.isIfaceActive<sup>9+</sup> 289 290isIfaceActive(iface: string): Promise\<number> 291 292判断接口是否已激活,使用Promise方式作为异步方法。 293 294**系统接口**:此接口为系统接口。 295 296**需要权限**:ohos.permission.GET_NETWORK_INFO 297 298**系统能力**:SystemCapability.Communication.NetManager.Ethernet 299 300**参数:** 301 302| 参数名 | 类型 | 必填 | 说明 | 303| ------ | ------ | ---- | -------------------------------------- | 304| iface | string | 是 | 接口名。为空时代表查询是否存在激活接口 | 305 306**返回值:** 307 308| 类型 | 说明 | 309| ----------------| ------------------------------------------------------------------ | 310| Promise\<number> | 以Promise形式返回获取结果。已激活:1,未激活:0,其他为获取失败错误码。| 311 312**错误码:** 313 314| 错误码ID | 错误信息 | 315| ------- | ----------------------------------------| 316| 201 | Permission denied. | 317| 202 | Non-system applications use system APIs. | 318| 401 | Parameter error. | 319| 2200001 | Invalid parameter value. | 320| 2200002 | Operation failed. Cannot connect to service.| 321| 2200003 | System internal error. | 322| 2201005 | Device information does not exist. | 323 324**示例:** 325 326```ts 327import ethernet from '@ohos.net.ethernet' 328import { BusinessError } from '@ohos.base' 329 330ethernet.isIfaceActive("eth0").then((data: number) => { 331 console.log("isIfaceActive promise = " + JSON.stringify(data)); 332}).catch((error: BusinessError) => { 333 console.log("isIfaceActive promise error = " + JSON.stringify(error)); 334}); 335``` 336 337## ethernet.getAllActiveIfaces<sup>9+</sup> 338 339getAllActiveIfaces(callback: AsyncCallback\<Array\<string>>): void 340 341获取活动的网络接口,使用callback方式作为异步方法。 342 343**系统接口**:此接口为系统接口。 344 345**需要权限**:ohos.permission.GET_NETWORK_INFO 346 347**系统能力**:SystemCapability.Communication.NetManager.Ethernet 348 349**参数:** 350 351| 参数名 | 类型 | 必填 | 说明 | 352| -------- | ------------------------------------ | ---- | ------------------------------ | 353| callback | AsyncCallback\<Array\<string>> | 是 | 回调函数,返回值为对应接口名。 | 354 355**错误码:** 356 357| 错误码ID | 错误信息 | 358| ------- | ----------------------------------------| 359| 201 | Permission denied. | 360| 202 | Non-system applications use system APIs. | 361| 2200002 | Operation failed. Cannot connect to service.| 362| 2200003 | System internal error. | 363 364**示例:** 365 366```ts 367import ethernet from '@ohos.net.ethernet' 368import { BusinessError } from '@ohos.base' 369 370ethernet.getAllActiveIfaces((error: BusinessError, value: string[]) => { 371 if (error) { 372 console.log("getAllActiveIfaces callback error = " + JSON.stringify(error)); 373 } else { 374 console.log("getAllActiveIfaces callback value.length = " + JSON.stringify(value.length)); 375 for (let i = 0; i < value.length; i++) { 376 console.log("getAllActiveIfaces callback = " + JSON.stringify(value[i])); 377 } 378 } 379}); 380``` 381 382## ethernet.getAllActiveIfaces<sup>9+</sup> 383 384getAllActiveIfaces(): Promise\<Array\<string>> 385 386获取活动的网络接口,使用Promise方式作为异步方法。 387 388**系统接口**:此接口为系统接口。 389 390**需要权限**:ohos.permission.GET_NETWORK_INFO 391 392**系统能力**:SystemCapability.Communication.NetManager.Ethernet 393 394**返回值:** 395 396| 类型 | 说明 | 397| ------------------------------ | ----------------------------------------------- | 398| Promise\<Array\<string>> | 以Promise形式返回获取结果。返回值为对应接口名。 | 399 400**错误码:** 401 402| 错误码ID | 错误信息 | 403| ------- | ----------------------------------------| 404| 201 | Permission denied. | 405| 202 | Non-system applications use system APIs. | 406| 2200002 | Operation failed. Cannot connect to service.| 407| 2200003 | System internal error. | 408 409**示例:** 410 411```ts 412import ethernet from '@ohos.net.ethernet' 413import { BusinessError } from '@ohos.base' 414 415ethernet.getAllActiveIfaces().then((data: string[]) => { 416 console.log("getAllActiveIfaces promise data.length = " + JSON.stringify(data.length)); 417 for (let i = 0; i < data.length; i++) { 418 console.log("getAllActiveIfaces promise = " + JSON.stringify(data[i])); 419 } 420}).catch((error:BusinessError) => { 421 console.log("getAllActiveIfaces promise error = " + JSON.stringify(error)); 422}); 423``` 424 425## ethernet.on('interfaceStateChange')<sup>10+</sup> 426 427on(type: 'interfaceStateChange', callback: Callback\<{ iface: string, active: boolean }\>): void 428 429注册网卡热插拔事件,使用callback方式作为异步方法。 430 431**系统接口**:此接口为系统接口。 432 433**需要权限**:ohos.permission.GET_NETWORK_INFO 434 435**系统能力**:SystemCapability.Communication.NetManager.Ethernet 436 437**参数:** 438 439| 参数名 | 类型 | 必填 | 说明 | 440| -------- | --------------------------------------- | ---- | ---------- | 441| type | string | 是 | 订阅的事件类型,'interfaceStateChange'。 | 442| callback | AsyncCallback\<{ iface: string, active: boolean }\> | 是 | 回调函数。<br>iface:网卡名称。<br>active:是否处于激活状态(true:激活;false:未激活) | 443 444**错误码:** 445 446| 错误码ID | 错误信息 | 447| ------- | -------------------------------------------- | 448| 201 | Permission denied. | 449| 202 | Non-system applications use system APIs. | 450| 401 | Parameter error. | 451 452**示例:** 453 454```ts 455import ethernet from '@ohos.net.ethernet' 456 457ethernet.on('interfaceStateChange', (data: object) => { 458 console.log('on interfaceSharingStateChange:' + JSON.stringify(data)); 459}); 460``` 461 462## ethernet.off('interfaceStateChange')<sup>10+</sup> 463 464off(type: 'interfaceStateChange', callback?: Callback\<{ iface: string, active: boolean }\>): void 465 466注销网卡热插拔事件,使用callback方式作为异步方法。 467 468**系统接口**:此接口为系统接口。 469 470**需要权限**:ohos.permission.GET_NETWORK_INFO 471 472**系统能力**:SystemCapability.Communication.NetManager.Ethernet 473 474**参数:** 475 476| 参数名 | 类型 | 必填 | 说明 | 477| -------- | --------------------------------------- | ---- | ---------- | 478| type | string | 是 | 订阅的事件类型,'interfaceStateChange'。 | 479| callback | AsyncCallback\<{ iface: string, active: boolean }> | 否 | 回调函数。<br>iface:网卡名称。<br>active:是否处于激活状态(true:激活;false:未激活) | 480 481**错误码:** 482 483| 错误码ID | 错误信息 | 484| ------- | -------------------------------------------- | 485| 201 | Permission denied. | 486| 202 | Non-system applications use system APIs. | 487| 401 | Parameter error. | 488 489**示例:** 490 491```ts 492import ethernet from '@ohos.net.ethernet' 493 494ethernet.off('interfaceStateChange'); 495``` 496 497## InterfaceConfiguration<sup>9+</sup> 498 499以太网连接配置网络信息。 500 501**系统接口**:此接口为系统接口。 502 503**系统能力**:SystemCapability.Communication.NetManager.Ethernet 504 505| 名称 | 类型 | 必填 | 说明 | 506| ------------ | ----------------------- | ---|------------------------------------------------------------ | 507| mode | [IPSetMode](#ipsetmode) | 是 | 以太网连接配置模式。 | 508| ipAddr | string | 是 | 以太网连接静态配置ip信息,地址值范围0-255.0-255.0-255.0-255(DHCP模式无需配置)。 | 509| route | string | 是 | 以太网连接静态配置路由信息,地址值范围0-255.0-255.0-255.0-255(DHCP模式无需配置)。 | 510| gateway | string | 是 | 以太网连接配置网关信息,地址值范围0-255.0-255.0-255.0-255(DHCP模式无需配置)。 | 511| netMask | string | 是 | 以太网连接配置子网掩码,地址值范围0-255.0-255.0-255.0-255(DHCP模式无需配置)。 | 512| dnsServers | string | 是 | 以太网连接配置dns服务地址,地址值范围0-255.0-255.0-255.0-255(DHCP模式无需配置)多地址间用“,”隔开。 | 513| httpProxy<sup>10+</sup> | [HttpProxy](js-apis-net-connection.md#httpproxy10) | 否 | 以太网连接代理配置信息,默认情况下不配置任何代理信息。 | 514 515## IPSetMode<sup>9+</sup> 516 517以太网连接模式。 518 519**系统接口**:此接口为系统接口。 520 521**系统能力**:SystemCapability.Communication.NetManager.Ethernet 522 523| 名称 | 值 | 说明 | 524| --------------------- | ---- | -------------------------- | 525| STATIC | 0 | 以太网连接静态配置网络信息。 | 526| DHCP | 1 | 以太网连接动态配置网络信息。 | 527| LAN_STATIC | 2 | LAN连接静态配置网络信息。 | 528| LAN_DHCP | 3 | LAN连接动态配置网络信息。 | 529