SwiftyPing

Swift 5 的 ICMP ping 客户端

SwiftyPing 是一款易于使用、单文件的 ICMP ping 客户端

本项目基于 SwiftPing:https://github.com/ankitthakur/SwiftPing

用法

// Ping indefinitely
let pinger = try? SwiftyPing(host: "1.1.1.1", configuration: PingConfiguration(interval: 0.5, with: 5), queue: DispatchQueue.global())
pinger?.observer = { (response) in
    let duration = response.duration
    print(duration)
}
try? pinger?.startPinging()

// Ping once
let once = try? SwiftyPing(host: "1.1.1.1", configuration: PingConfiguration(interval: 0.5, with: 5), queue: DispatchQueue.global())
once?.observer = { (response) in
    let duration = response.duration
    print(duration)
}
once?.targetCount = 1
try? once?.startPinging()

安装

只需将 SwiftyPing.swift 文件拖放到你的项目中即可。在 Mac 应用程序中使用 SwiftyPing 需要在应用程序沙箱中允许“网络 -> 传入连接”和“网络 -> 传出连接”。

你也可以使用 Swift 包管理器

.Package(url: "https://github.com/samiyr/SwiftyPing.git", branch: "master")

未来开发和贡献

我创建这个项目是基于我的需求,所以除非我真的需要,否则我可能不会添加任何功能。我至少会在一段时间内维护它(意味着错误修复和对新 Swift 版本的支持)。但是,你可以提交拉取请求,我会查看。请尽量保持整体编码风格。

注意事项

这是底层代码,基本上是将 C 代码翻译成 Swift。这意味着存在从原始字节到 Swift 结构体的不安全转换,Swift 通常的类型安全检查不再适用。这些转换可能会不优雅地失败(抛出异常),甚至可能被用作漏洞利用(我不是安全研究员,因此没有专业知识来确定),所以请谨慎使用,尤其是在 ping 不受信任的主机时。

此外,虽然我认为 API 现在是稳定的,但我不做任何保证 —— 某些新版本可能会破坏旧的功能。

许可证

你可以几乎以任何你想要的方式使用它。官方授权基于 MIT 许可证。