HarmonyOS鸿蒙NEXT应用开发如何使用网络连接管理模块获取网络IP地址?

HarmonyOS鸿蒙NEXT应用开发如何使用网络连接管理模块获取网络IP地址? 如何使用@ohos.net.connection模块的getConnectionPropertiesSync接口获取网络的IP地址?

3 回复

参考文档:获取网络IP地址

更多关于HarmonyOS鸿蒙NEXT应用开发如何使用网络连接管理模块获取网络IP地址?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS NEXT中,使用@ohos.net.connection模块的getDefaultNet()方法获取默认网络连接,再通过connection.getAddresses()获取IP地址列表。示例代码:

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

let netCap = {
  bearerTypes: [connection.BearerType.BEARER_WIFI]
};
let netSpecifier = {
  netCapabilities: netCap
};

connection.getDefaultNet(netSpecifier).then(netHandle => {
  netHandle.getAddresses().then(addresses => {
    console.log('IP addresses:', addresses);
  });
});

需在module.json5中声明ohos.permission.GET_NETWORK_INFO权限。

在HarmonyOS NEXT中,可以通过@ohos.net.connection模块的getConnectionPropertiesSync接口获取网络连接属性,包括IP地址。以下是具体实现步骤:

  1. 导入模块

    import { connection } from '[@kit](/user/kit).NetworkKit';
    
  2. 获取网络连接属性

    let netHandle = connection.getDefaultNetSync();
    let connectionProperties = netHandle.getConnectionPropertiesSync();
    
  3. 提取IP地址connectionProperties对象包含linkAddresses数组,其中每个元素包含address字段,即IP地址:

    let ipAddresses = connectionProperties.linkAddresses.map(addr => addr.address);
    

完整示例代码:

import { connection } from '[@kit](/user/kit).NetworkKit';

try {
  let netHandle = connection.getDefaultNetSync();
  let connectionProperties = netHandle.getConnectionPropertiesSync();
  
  if (connectionProperties.linkAddresses) {
    connectionProperties.linkAddresses.forEach(addr => {
      console.log('IP Address: ' + addr.address);
    });
  }
} catch (err) {
  console.error('Failed to get connection properties: ' + JSON.stringify(err));
}

注意事项:

  • 需要申请ohos.permission.GET_NETWORK_INFO权限
  • 此方法获取的是设备在当前默认网络连接中的IP地址
  • 确保设备已连接到网络,否则可能获取失败
回到顶部