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

功能场景描述

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

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

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

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

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 如何获取网络类型、网络状态
1168浏览 • 1回复 待解决
HarmonyOS 监听网络错误
765浏览 • 1回复 待解决
HarmonyOS网络监听问题
1114浏览 • 1回复 待解决
如何实现ArrayList的删除、去重等功能
1530浏览 • 1回复 待解决
HarmonyOS 网络请求结果数据解析
1108浏览 • 1回复 待解决
HarmonyOS 网络变化监听失效
1014浏览 • 1回复 待解决
HarmonyOS 如何检测网络状态
1048浏览 • 1回复 待解决
HarmonyOS 网络监听api怎么用
1053浏览 • 1回复 待解决
HarmonyOS 网络连接监听问题
1242浏览 • 1回复 待解决
HarmonyOS 网络监听回调多次
1051浏览 • 1回复 待解决
获取当前网络状态的方法
1777浏览 • 1回复 待解决
网络监听的最佳实践有哪些?
1635浏览 • 1回复 待解决
HarmonyOS 怎么实现网络切换的监听
1109浏览 • 1回复 待解决