网络扫描器

GitHub code size in bytes GitHub build results

提供了一种方法来扫描特定网络或本地网络,以查找满足任意条件的主机。

API 和实现使用 Swift 结构化并发(await/async, Task 等)。

例如,查找本地网络上所有成功响应主页请求的 HTTPS 服务器

import Foundation
import NetworkScanner

let scanner = NetworkScanner(concurrencyLimit: 250) { address in
    guard let URL = URL(string: "https://\(address)") else {
        throw Errors.unableToConstructURL(address: address)
    }
    
    do {
        _ = try await session.data(from: URL)
        return .hit
    } catch {
        return .miss
    }
}

for try await result in scanner {
    print(result) // e.g. "192.168.0.10: Hit"
}

enum Errors: Error {
    case unableToConstructURL(address: String)
}

请参阅文档了解更多详情,以及随附的演示应用程序了解更多探测示例。