首页 > 解决方案 > Swift - 测试与网站的连接和可用端口

问题描述

我无法在互联网上的任何地方找到这个问题的可靠答案,我觉得必须有一个简单的答案。我正在尝试测试我是否在 Mac OS 上使用 Swift 连接到特定的 IP 地址和某些端口。

如果我能够连接到 URL 或与之关联的特定端口,我真的只想返回 true/false。

有任何想法吗?

标签: swiftnetworkingreachabilitycfnetwork

解决方案


看看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, 是建立在这个框架之上的。


推荐阅读