Просто пытаюсь Bonjour в быстром 3Swift 3 как разрешить IP-адрес NetService?
Вот мой код, я могу получить делегат
func netServiceDidResolveAddress(_ sender: NetService) {
print("netServiceDidResolveAddress service name \(sender.name) of type \(sender.type)," +
"port \(sender.port), addresses \(sender.addresses)")
}
А вот мой результат
netServiceDidResolveAddress имя службы Уэббера Mac мини типа _myapp ._tcp., порт 5678, адреса Дополнительно ([< 1002162e c0a80205 00000000 00000000>, < 1c1e162e 00000000 fe800000 00000000 00bce7ad 24b4b7e8 08000000>])
c0a80205 является IP Я ищу => 192.168.2.5
И адрес [Data], Apple говорит
Адреса службы. Это NSArray экземпляров NSData, , каждый из которых содержит один struct sockaddr, подходящий для использования с connect (2). В случае, если адреса не разрешены для службы или услуга еще не разрешена, пустой NSArray возвращает .
Я все еще путаю, почему данные не могут использовать .btyes? Как Apple говорит: «Это NSArray экземпляров NSData» Но я не могу использовать его как NSData
И как разрешить адрес как читаемую строку IP?
Я стараюсь об этом раньше, но не получить результат, как я, кроме ...
let thedata = NSData(bytes: sender.addresses, length: (sender.addresses?.count)!)
var storage = sockaddr_storage()
thedata.getBytes(&storage, length: sizeof(sockaddr_storage))
if Int32(storage.ss_family) == AF_INET {
let addr4 = withUnsafePointer(&storage) {UnsafePointer<sockaddr_in>($0).pointee }
print(inet_ntoa(addr4.sin_addr));
}
Любое предложение будет помощь, спасибо