这个结构体/协议是一个基本的独立结构体和一个字符串扩展,可以非常简单地处理IPv4和IPv6 IP 地址。
它的主要用途是从文本输入等生成的字符串中建立正确的 IP 地址。 这是一个智能解析器。
此设计的目的是让我们能够正确地表示 IP 地址。 这主要是由于 IPv6 地址的复杂性; 及其“快捷方式”语法,用于表示连续的零。
这个类会读取这些地址,并且还会为您提供格式正确(并已缩短)的字符串。
它应该可以在 macOS、tvOS、WatchOS 和 iOS 上正常工作。 它仅依赖于 Swift Foundation 库。
这需要 Swift 4.0 或更高版本(已测试到 5)。
您可以使用 Swift Package Manager 包含该库,只需引用其 GitHub 存储库 URI(SSH:git@github.com:RiftValleySoftware/RVS_IPAddress.git 或 HTTPS:https://github.com/RiftValleySoftware/RVS_IPAddress.git)。
然后,您需要导入模块,方法是将以下内容添加到将访问 spinner 的源文件中
import RVS_IPAddress
您可以使用 Carthage 作为依赖项管理器来安装它。
只需将以下内容添加到您的 Cartfile
github "RiftValleySoftware/RVS_IPAddress"
这将把项目带入“Carthage”目录。
您可能应该从项目中添加单个文件(而不是产品)。 这可以在“Checkins”中找到。
如果您这样做,则无需导入。
如果您包含产品(在“Build”子目录中),则需要导入模块,方法是将以下内容添加到将访问 spinner 的源文件中
import RVS_IPAddress
请注意,Carthage 可能不会签署该模块,并且您可能在提交时遇到问题。
这是一个简单的源文件; 不是模块。
要使用它,只需将 RVS_IPAddress/RVS_IPAddress.swift 文件添加到您的项目中; 将其复制到您想要的任何位置。
项目中的所有其他内容都用于测试、验证和共享。
该结构体可以通过提供一个字符串来实例化,该字符串包含 IPv4 IP 地址或 IPv6 IP 地址的有效表示形式。 该结构体将解析该字符串,并将存储一个内部的 Int 数组,用于表示该 IP 地址。 然后,它将能够以所需的任何格式返回 IP 地址。
它在存储之前验证地址的正确性,因此您知道地址始终采用有效形式。
它不验证地址是否实际指向任何位置。 它仅确保它是一个格式正确的 IP 地址。
您可以提交任何字符串,并且工厂方法将确保生成正确的 IP 版本处理程序的实例。
if let testIP = RVS_IPAddressExtractIPAddress("1.2.3.4") {
print("This should be an IPv4 Address: \(String(describing: testIP))")
}
if let testIP = RVS_IPAddressExtractIPAddress("1:2:3:4:5:6:7:8") {
print("This should be an IPv6 Address: \(String(describing: testIP))")
}
您还可以将 TCP 端口添加到地址
if let testIP = RVS_IPAddressExtractIPAddress("1.2.3.4:5") {
print("This should be an IPv4 Address: \(String(describing: testIP))")
}
if let testIP = RVS_IPAddressExtractIPAddress("[1:2:3:4:5:6:7:8]:9") {
print("This should be an IPv6 Address: \(String(describing: testIP))")
}
生成的地址可以作为 Int 数组或 String 访问,无论是否带有 TCP 端口。
在您的项目中使用 RVS_IPAddress 没有依赖关系。 为了在模块项目中对其进行测试和运行,您应该使用 CocoaPods 安装 SwiftLint,虽然这不是必需的。 这只是一个好习惯。
MIT 许可证
特此授予任何人免费获取本软件和相关文档文件(“软件”)副本的许可,以便在不受限制的情况下处理本软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向其提供软件的人员这样做,但须符合以下条件
上述版权声明和本许可声明应包含在所有副本或本软件的重要部分中。
本软件按“原样”提供,不提供任何形式的明示或暗示保证,包括但不限于适销性、特定用途适用性和不侵权的保证。 在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权诉讼还是其他诉讼中,由软件或其使用或其他交易引起或与之相关的。软件。
The Great Rift Valley Software Company: https://riftvalleysoftware.com