网络管理中网络详情、域名解析、网络状态监听等功能模拟

功能场景描述

网络管理中网络详情、域名解析、网络状态监听等功能模拟-鸿蒙开发者社区

网络管理中网络详情、域名解析、网络状态监听等功能模拟-鸿蒙开发者社区

网络管理中网络详情、域名解析、网络状态监听等功能模拟-鸿蒙开发者社区

网络管理中网络详情、域名解析、网络状态监听等功能模拟-鸿蒙开发者社区

HarmonyOS
2024-05-28 20:26:40
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
编程指东

使用OS相关的核心API

3、核心代码详解

//判断是否有网,并获取网络ID 
isNetworkAccess() { 
connection.hasDefaultNet().then((result) => { 
if (result) { 
this.netHandle = connection.getDefaultNetSync() 
this.NetworkId = "网络ID为: " + JSON.stringify(this.netHandle) 
} 
}) 
}
//获取网络信息详情 
getNetworkMessage() { 
if (this.netHandle) { 
connection.getNetCapabilities(this.netHandle, (err, netCap) => { 
let netType = netCap.bearerTypes; 
for (let i = 0;i < netType.length; i++) { 
if (netType[i] === 0) { 
this.NetMessage = "网络类型为:蜂窝网络\n" 
} else if (netType[i] === 1) { 
this.NetMessage = "网络类型为:wifi\n" 
} else { 
this.NetMessage = "网络类型为:其他以太网\n" 
} 
} 
this.NetMessage += "networkCap为:" + JSON.stringify(netCap.networkCap) + "\n"; 
}) 
} 
}
//域名解析 
parseHostName(hostName: string) { 
this.ip = ""; 
connection.getAddressesByName(hostName).then((data) => { 
for (let i = 0;i < data.length; i++) { 
this.ip += data[i].address + "\n"; 
} 
}).catch((err) => { 
console.error("dns parse error: " + JSON.stringify(err)) 
this.ip = "域名解析失败!" 
}) 
}
//监听网络状态变化 
useNetworkRegister() { 
this.netCon = connection.createNetConnection(); 
this.NetStateMessage += "开启网络监听!\n"; 
this.netCon.register((err) => { 
if (!err) { 
console.info("register network success"); 
} 
}) 
this.netCon.on("netAvailable", (netHandle) => { 
console.info("network is available"); 
this.NetStateMessage += "有网络可用,ID为: " + netHandle.netId + "\n"; 
}) 
this.netCon.on("netBlockStatusChange", (data) => { 
console.info("network block,netId is :" + data.netHandle.netId); 
this.NetStateMessage += "网络堵塞,ID为: " + data.netHandle.netId + "\n"; 
}) 
this.netCon.on("netCapabilitiesChange", (data) => { 
console.info("netCapabilitiesChange: " + JSON.stringify(data)); 
this.NetStateMessage += "网络能力变化:ID为" + data.netHandle.netId + "。网络能力信息为: " + JSON.stringify(data.netCap) + "\n"; 
}) 
this.netCon.on("netConnectionPropertiesChange", (data) => { 
console.info("netConnectionPropertiesChange: " + JSON.stringify(data)); 
this.NetStateMessage += "网络连接信息变化:ID为" + data.netHandle.netId + "。网络连接信息为: " + JSON.stringify(data.connectionProperties) + "\n"; 
}) 
}
//取消网络状态变化监听 
unUseNetworkRegister() { 
if (this.netCon) { 
this.netCon.unregister(() => { 
console.info("network register is off") 
this.NetStateMessage += "关闭网络监听!\n"; 
}) 
} else { 
console.info("network unregister failed") 
this.NetStateMessage += "关闭网络监听失败!\n"; 
} 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.

4、实现效果


分享
微博
QQ
微信
回复
2024-05-29 21:26:54
相关问题
HarmonyOS 监听网络错误
571浏览 • 1回复 待解决
HarmonyOS网络监听问题
911浏览 • 1回复 待解决
HarmonyOS 网络请求结果数据解析
833浏览 • 1回复 待解决
HarmonyOS 网络变化监听失效
786浏览 • 1回复 待解决
如何实现ArrayList的删除、去重等功能
1288浏览 • 1回复 待解决
HarmonyOS 如何检测网络状态
746浏览 • 1回复 待解决
HarmonyOS 网络连接监听问题
1019浏览 • 1回复 待解决
HarmonyOS 网络监听api怎么用
753浏览 • 1回复 待解决
HarmonyOS 网络监听回调多次
859浏览 • 1回复 待解决
获取当前网络状态的方法
1524浏览 • 1回复 待解决
HarmonyOS 怎么实现网络切换的监听
845浏览 • 1回复 待解决
网络监听的最佳实践有哪些?
1378浏览 • 1回复 待解决