SimplePing (macOS), используемый в фоновом потоке, не работает. Какие есть альтернативы? - PullRequest
0 голосов
/ 02 октября 2019

Я использую Простой Ping API для проверки связи с множеством хостов. Мой класс 'PingLatencyCalculator' - это простая оболочка для SimplePing, которая вычисляет задержку, а также время ожидания после 1 секунды для каждого запроса.

 let domains = ["www.amazon.com", "www.microsoft.com", "www.yahoo.com", "www.violanation.com", "www.stackoverflow.com", "www.docs.google.com", "www.microsoft.com", "www.google.com", "www.espn.in", "www.dsDSadasdsad.com"]

    let latencyCalculator = PingLatencyCalculator()
    for domain in domains {
        latencyCalculator.pingHost(hostname: domain) { (latency) in
            if let unwrappedlatency = latency {
                DispatchQueue.main.async {
                    print("\(domain) - Your latency is \(String(describing: unwrappedlatency)))")
                }
            } else {
                    print("\(domain) could not be reached...")
            }
        }
    }

Все работает отлично. Единственная проблема заключается в том, что Apple SimplePing API построен на C-библиотеках, и кажется, что их обратные вызовы не будут работать с GCD, поэтому он должен выполняться в главном потоке. это в основной ветке? Если я запускаю это в фоновом потоке, обратные вызовы не вызываются.

Так, каковы мои другие варианты пинговать хосты одновременно в фоновом режиме? Любые предложения будут оценены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...