Swift - тестирование подключения к веб-сайту и доступным портам - PullRequest
0 голосов
/ 22 февраля 2019

Мне не удалось найти надежного ответа на этот вопрос в Интернете, и я чувствую, что должен быть простой ответ.Я пытаюсь проверить, есть ли у меня соединение с определенными IP-адресами и определенными портами с Swift на Mac OS.

Я просто хочу вернуть true / false, если я могу подключиться к URL-адресу или конкретным портам, связанным с ним.

Есть идеи?

1 Ответ

0 голосов
/ 23 февраля 2019

Посмотрите на Network рамки.Он очень мощный и гибкий и обеспечивает прямой доступ к таким протоколам, как TLS, TCP и UDP, для пользовательских протоколов приложений.Он готов к быстрой работе и прост в использовании.

import Network

let connection = NWConnection(host: "www.google.com", port: .https, using: .tcp)
connection.stateUpdateHandler = { (newState) in
    switch(newState) {
    case .ready:
    print("Handle connection established")
    case .waiting(let error):
    print("Waiting for network", error.localizedDescription)
    case .failed(let error):
    print("Fatal connection error", error.localizedDescription)
    default:
    break
    }
}
connection.start(queue: .main) // Use some other queue if doing it for real.

Приведенный выше код будет работать даже на игровой площадке (и запускать stateUpdateHandler хотя бы один раз).В реальном приложении stateUpdateHandler будет вызываться каждый раз, когда изменяется состояние.Кстати, URLSession, построен на этой основе.

...