BenSwift 3 NetService IP nasıl çözümlenir? Sadece Burada hızlı 3</p> <p>Bonjour'u çalışırken
func netServiceDidResolveAddress(_ sender: NetService) {
print("netServiceDidResolveAddress service name \(sender.name) of type \(sender.type)," +
"port \(sender.port), addresses \(sender.addresses)")
}
Ve burada tip _myapp ait
netServiceDidResolveAddress hizmet adı Webber'in Mac mini, benim sonucudur temsilci alabilir, benim kodudur ._tcp., port 5678, adresleri İsteğe bağlı (< 1c1e162e 00000000 fe800000 00000000 00bce7ad 24b4b7e8 08000000>]) 01 İsteğe bağlı (Adres: 1002162e c0a80205 00000000 00000000)
c0a80205 Apple hizmetinin
adreslerini diyor IP I => 192.168.2.5
arayan Ve adresi [Data] olmasıdır. Bu, her biri connect (2) ile kullanıma uygun tek bir struct sockaddr içeren bir NSData örneğidir, . hizmeti için hiçbir adres çözümlenmemiş veya hizmet henüz çözümlenmemişse, boş bir NSArray döndürülür.
Verilerin neden kullanamadıklarını hala karıştırıyorum. Apple'ın "Bu NSData örneklerinin bir NSArray'ı" olduğu gibi Ama bunu NSData
gibi kullanamıyorum Ve adresi okunabilir IP dizesi olarak nasıl çözebilirim?Ben, tamam ... Bu akıllı çözüm değildir
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));
}
Herhangi bir öneri yardım olacak, teşekkürler