Посмотрите на 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
, построен на этой основе.