Я пытаюсь выполнить простой поиск DNS в swift. До сих пор вот код, который у меня есть:
let hostRef = CFHostCreateWithName(kCFAllocatorDefault, "google.com").takeRetainedValue()
var resolved = CFHostStartInfoResolution(hostRef, CFHostInfoType.Addresses, nil)
let addresses = CFHostGetAddressing(hostRef, &resolved).takeRetainedValue() as NSArray
В этот момент каждый элемент в "адресах" NSArray является объектом CFDataRef, обертывающим структуру sockaddr.
Так как CFDataRef может быть беспошлинно подключен к NSData, я могу пропустить их так:
for address: AnyObject in addresses {
println(address) // address is of type NSData.
}
Пока так хорошо (я думаю). Это выводит достоверные данные, когда я запускаю его в unit test. Здесь я застрял. В моей жизни я не могу понять, как преобразовать байты в объекте NSData в структуру sockaddr.
Как я могу преобразовать адрес .bytes, который имеет тип COpaquePointer?, в c struct? Любая помощь оценивается. Я стучу головой о стену, пытаясь понять это.