SwiftIPAddress

SwiftIPAddress 是一个使用 Apple 的 Swift 编程语言解析和呈现 IP 地址的库。它不仅提供了一种惯用的 API,让开发者感觉熟悉,而且速度极快,性能优于操作系统标准库,并且经过了非常完善的测试。

设计目标

以下是指导此软件包开发的目标:

主要类型必须用纯 Swift 代码实现。

这个项目完全使用纯 Swift 实现,既是一种学术实践,也是一种约束。 包装 inet_ntopinet_pton 方法会很容易,但这既会限制编译器内联代码的能力,也会阻止与 Swift 未来目标的互操作性。

主要类型使用的内存不得超过表示其值所需的内存。

在云部署中内存是最受限制的资源的时代,对我来说,使用不超过内部表示绝对需要的内存至关重要。 IPv4Address 在内部用 4 个字节表示,而 IPv6Address 使用 16 个字节。 它们也都是值类型,避免了任何内存管理的需求。

该库必须非常快。

当从 Swift 调用时,此库目前的性能大大超过了操作系统库。 这归功于纯 Swift 实现,无需转换成 C 友好的数据结构或从 C 友好的数据结构转换,并且可能进行更积极的内联。 这个库证明了 Swift 代码可以非常高效,甚至优于原生 C 函数。

安装

SwiftIPAddress 使用 Swift Package Manager 安装。 它与使用 Swift 3.0 及更高版本的项目兼容。 要在您的项目中使用它,只需将以下行添加到您包的依赖项中

dependencies: [
    .Package(url: "https://github.com/Andrew-Dunn/SwiftIPAddress.git",
                  "1.0.1"),
]

然后,只需在源文件开头导入 IPAddress 包即可直接使用。

import IPAddress

let ip = IPv6Address("2b88:b6::14")

API

IPv4Address

IPv4Address 类型是一个不可变的数据结构,代表一个 IPv4 地址。

IPv6Address

IPv6Address 类型是一个不可变的数据结构,代表一个 IPv6 地址。

许可

版权所有 © Andrew Dunn, 2017

根据 Apache License, Version 2.0(“许可证”)授权;除非符合许可证的规定,否则您不得使用此文件。 您可以在以下位置获得许可证的副本:https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则软件是按“原样”分发的,不作任何形式的保证或条件,无论是明示的还是暗示的。 有关权限和限制的特定语言,请参阅许可证。