我无法在互联网上的任何地方找到这个问题的可靠答案,我觉得必须有一个简单的答案。我正在尝试测试我是否在Mac OS上使用Swift连接到特定的IP地址和某些端口。
如果我能够连接到URL或与之关联的特定端口,我真的只想返回true / false。
有任何想法吗?
看看Network
框架。它功能强大且非常灵活,允许直接访问TLS,TCP和UDP等协议,以用于自定义应用程序协议。它是Swift-ready并且易于使用。
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
,建立在这个框架之上。