CFHostGetAddressing()是否支持ipv6的DNS条目?

我正在尝试使用CFHostGetAddressing做一个简单的DNS查找。 但是,我注意到它返回了一个sockaddr结构体的数组,我猜这意味着它只能做IPV4。

有没有办法在iOS中支持IPV6地址的DNS条目? 也许一个类似的API返回一个sockaddr_storage结构数组?

CFHostGetAddressing()文档可能会引起误解,因为struct sockaddr是一个涵盖各种套接字地址(IPv4,IPv6,…)的所有常见元素的结构。 它通常只用于传递一个通用指针给套接字函数。

其实CFHostGetAddressing()与IPv6 CFHostGetAddressing()工作。 它返回一个CFData元素数组,其中每个元素包含一个struct sockaddr_in或一个struct sockaddr_in6

以上一个问题的代码作为出发点,以下内容应该可以工作:

 let hostRef = CFHostCreateWithName(kCFAllocatorDefault, "localhost").takeRetainedValue() var resolved = CFHostStartInfoResolution(hostRef, CFHostInfoType.Addresses, nil) let addresses = CFHostGetAddressing(hostRef, &resolved).takeRetainedValue() as NSArray for addr in addresses as [NSData] { var sockaddr = UnsafePointer<sockaddr_storage>.alloc(1) addr.getBytes(sockaddr, length: sizeof(sockaddr_storage)) // ... sockaddr.destroy() }