im试图在网络上ping所有LAN主机,以找出哪一个活着,以后找到一个托管Web服务的Raspberry Pi和Ideas OS,将我的应用程序与我的应用一起使用Raspberry Web服务。
到目前为止,我可以在React-Nativatient中获得此脚本,以检索第一个IP的响应时间。当某些IP未使用时,它会停止。
我需要得到的是ping所有主机。
有时我会在捆绑台上遇到这样的错误:
可能的未经治疗的承诺拒绝(ID:0):错误:ping失败错误:ping失败 在CreateRorrorFromerRordata(blob:http://localhost:8081/002b13c9-1cd5-412d-b052-f561e7c876a6:2022:17) 在Blob:http://localhost:8081/002b13c9-1cd5-412d-b052-f561E7C876A6:1974:27 在MessageQueue .__ InvokeCallback(blob:http://localhost:8081/002b13c9-1cd5-412d-b052-f561e7c876a6:2541:18) 在Blob:http://localhost:8081/002b13c9-1cd5-412d-b052-f561E7C876A6:2272:18 At MessageQueue .__ Guard(blob:http://localhost:8081/002b13c9-1cd5-412d-b052-b052-f561e7c876a6:2445:13) 在MessageQueue.invokecallbackandurnflushedqueue(blob:http://localhost:8081/002b13c9-1cd5-412d-b052-b052-f561e7c876a6:2271:14) at http://localhost:8081/debugger-ui/debuggerworker.js:72:58
import Ping from 'react-native-ping';
function check(ip) {
return Ping.start('192.168.0.' + ip);
}
async function lanScan(array) {
for (const item of array) {
var ok = await check(item);
console.log(ok + " " + item)
}
console.log('Done!');
}
var ips = [];
for(var i= 100; i<= 254; i++){
ips.push(i);
}
lanScan(ips);
您的检查功能正在返回Promise
,但是您没有设置来处理任何错误。因此,一旦ping在循环中失败,整个功能就会停止运行。您可以始终测试每个ping的一种方法是将支票包裹在try / catch
中。例如:
async function lanScan(array) {
for (const item of array) {
try {
var ok = await check(item)
console.log(ok + " " + item)
} catch(e) {
console.log(e)
}
}
console.log('Done!')
}