swift - Swift - 测试与网站的连接和可用端口
问题描述
我无法在互联网上的任何地方找到这个问题的可靠答案,我觉得必须有一个简单的答案。我正在尝试测试我是否在 Mac OS 上使用 Swift 连接到特定的 IP 地址和某些端口。
如果我能够连接到 URL 或与之关联的特定端口,我真的只想返回 true/false。
有任何想法吗?
解决方案
看看Network
框架。它超级强大且灵活,允许直接访问 TLS、TCP 和 UDP 等协议,用于您的自定义应用程序协议。它是 Swift 就绪且易于使用的。
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.
上面的代码甚至可以在 Playground 中工作(并且stateUpdateHandler
至少触发一次)。在实际应用程序stateUpdateHandler
中,每次状态更改时都会调用。BTW, URLSession
, 是建立在这个框架之上的。