Staram Bonjour w szybkim 3Swift 3 jak rozwiązać NetService IP?
tu jest mój kod, mogę odbierać delegata
func netServiceDidResolveAddress(_ sender: NetService) {
print("netServiceDidResolveAddress service name \(sender.name) of type \(sender.type)," +
"port \(sender.port), addresses \(sender.addresses)")
}
A oto mój wynik
nazwa usługinetServiceDidResolveAddress Webbera Mac mini typu _myapp ._tcp., port 5678, adresy Opcjonalne ([< 1002162e c0a80205 00000000 00000000>, < 1c1e162e 00000000 fe800000 00000000 00bce7ad 24b4b7e8 08000000>])
c0a80205 jest IP I szuka => 192.168.2.5
oraz adres to [Dane], Apple mówi
adresy usług. Jest to instancja NSArray dla NSData, z których każda zawiera pojedynczą strukturę sockaddr odpowiednią do użycia z connect (2). Jeśli żaden adres nie zostanie rozwiązany dla usługi lub usługa nie została jeszcze rozwiązana, zwracana jest pusta tablica NSArray .
Nadal mylę się, dlaczego dane nie mogą korzystać z .btyes? Jak mówi Apple "To jest instancja NSAD z NSData" Ale nie mogę jej użyć jak NSData
A jak rozwiązać ten adres jako czytelny ciąg IP?
próbuję tego wcześniej, ale nie uzyskać wynik jak I z wyjątkiem ...
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));
}
Każda propozycja będzie pomoc, Dzięki