реагирует на родной пинг, все хосты останавливаются, когда IP не отвечает - PullRequest
1 голос
/ 10 марта 2019

Я пытаюсь пропинговать все узлы локальной сети в моей сети, чтобы выяснить, какой из них жив, чтобы потом найти raspberry pi, на котором размещен веб-сервис, и идею использовать мое приложение с веб-сервисом raspberry.

До сих пор я мог получить этот сценарий в реагирующем режиме для получения времени в мс для первых IP-адресов, если они отвечают.Он останавливается, когда какой-то IP-адрес не используется.

Что мне нужно получить, так это пропинговать все хосты.

Иногда я получаю в консоли диспетчера ошибку, подобную этой:

ВозможноНеобработанный отказ от обещания (id: 0): Ошибка: ping 失败 Ошибка: ping 失败 при createErrorFromErrorData (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 в MessageQueue .__ guard (blob: http://localhost:8081/002b13c9-1cd5-412d-b052-f561e7c876a6:2445:13) в MessageQueue.invokeCallbackAndReturnFlushedQueue (blob: http://localhost:8081/002b13c9-1cd5-412d-b052-f561e7c876a6:2271:14) в 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);

1 Ответ

1 голос
/ 10 марта 2019

Ваша функция проверки возвращает Promise, но у вас нет возможности установки для обработки ошибок.Таким образом, как только в вашем цикле происходит сбой проверки связи, вся функция перестает работать.Один из способов обеспечить проверку каждого пинга - это обернуть чек в 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!')
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...