Solo cercando Bonjour a Swift 3Swift 3 come risolvere NetService IP?
Ecco il mio codice, posso ricevere il delegato
func netServiceDidResolveAddress(_ sender: NetService) {
print("netServiceDidResolveAddress service name \(sender.name) of type \(sender.type)," +
"port \(sender.port), addresses \(sender.addresses)")
}
Ed ecco il mio risultato
netServiceDidResolveAddress nome del servizio di Webber Mac mini di tipo _myapp ._tcp., porta 5678, indirizzi Opzionale ([< 1002162e c0a80205 00000000 00000000>, < 1c1e162e 00000000 fe800000 00000000 00bce7ad 24b4b7e8 08000000>])
c0a80205 è l'IP che cercavo => 192.168.2.5
E l'indirizzo è [Dati], Apple dice
Gli indirizzi del servizio. Questo è un NSArray di istanze NSData, ognuno dei quali contiene un singolo struct sockaddr adatto per l'uso con connect (2). Nel caso in cui nessun indirizzo sia stato risolto per il servizio o il servizio non sia stato ancora risolto, viene restituito un NSArray vuoto .
Continuo a confondere perché Data non può utilizzare .btyes? Come dice Apple "Questo è un NSArray di istanze NSData" Ma non posso usarlo come NSData
E come risolvere l'indirizzo come stringa IP leggibile?
provo questo prima, ma non ottengo il risultato come ho tranne ...
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));
}
Ogni suggerimento sarà di aiuto, Grazie