【三方Ping工具简介】
三方Ping工具是用于测试网络连通性的常用工具之一。它可以通过发送ICMP Echo请求到目标主机,并接收响应来测量延迟时间和丢包率。对于鸿蒙NEXT应用而言,我们选择了来自OpenHarmony Package Manager (OHPM)的@ohos-rs/ping库,该库支持API 11、API 12和API 13等多个版本。
【权限问题描述】
在实际测试中,我们发现当手机系统为4.1时,尽管支持API 11,但在调用pingAsync函数时会因为“没有权限”而失败;而在5.0系统中则可以正常工作。这表明问题可能不是由API版本引起,而是与系统的权限处理机制有关。
【三方库使用】
1、首先需要导包 ohpm install @ohos-rs/ping
2、网络权限配置,我们需要在module.json5文件中声明ohos.permission.INTERNET权限:
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.INTERNET"
}
]
}
}
3、代码测试
import { pingAsync } from '@ohos-rs/ping';
@Entry
@Component
struct Page04 {
build() {
Column({ space: 20 }) {
Button('ping 网址测试').onClick(async () => {
try {
console.info(`开始ping www.baidu.com`);
const data = await pingAsync("www.baidu.com", {
count: 1,
timeout: 1,
interval: 1,
ipVersion: 'auto',
});
console.log(`连接成功ping:${JSON.stringify(data)}`);
this.getUIContext().showAlertDialog({
title: '连接成功',
message: JSON.stringify(data),
});
} catch (e) {
console.error('连接失败ping', e);
this.getUIContext().showAlertDialog({
title: '连接失败',
message: `Error: ${e.message}, Code: ${e.code}`,
});
}
});
Button('ping IP测试').onClick(async () => {
try {
console.info(`开始ping 119.75.217.109`);
const data = await pingAsync("119.75.217.109", {
count: 1,
timeout: 1,
interval: 1,
ipVersion: 'auto',
});
console.log(`连接成功ping:${JSON.stringify(data)}`);
this.getUIContext().showAlertDialog({
title: '连接成功',
message: JSON.stringify(data),
});
} catch (e) {
console.error('连接失败ping', e);
this.getUIContext().showAlertDialog({
title: '连接失败',
message: `Error: ${e.message}, Code: ${e.code}`,
});
}
});
}
.width('100%')
.height('100%');
}
}