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

功能场景描述

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

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

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

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

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"; 
} 
}

4、实现效果


分享
微博
QQ
微信
回复
2024-05-29 21:26:54
相关问题
HarmonyOS网络监听问题
314浏览 • 1回复 待解决
HarmonyOS 如何检测网络状态
39浏览 • 1回复 待解决
获取当前网络状态的方法
797浏览 • 1回复 待解决
如何对监听判断VPN类型网络
445浏览 • 1回复 待解决
如何实现ArrayList的删除、去重等功能
415浏览 • 1回复 待解决
HarmonyOS如何获取当前的网络状态
702浏览 • 1回复 待解决
基于原生能力的网络状态感知
566浏览 • 1回复 待解决
webview如何实现网络请求拦截功能
2242浏览 • 1回复 待解决
网络监听的最佳实践有哪些?
452浏览 • 1回复 待解决
熄屏状态网络请求失败
1916浏览 • 1回复 待解决
网络连接管理connection中this指向问题
586浏览 • 1回复 待解决