Nur Bonjour versuchen, in schnellen 3Swift 3 wie NetService IP aufzulösen?
Hier ist mein Code, ich die Delegaten
func netServiceDidResolveAddress(_ sender: NetService) {
print("netServiceDidResolveAddress service name \(sender.name) of type \(sender.type)," +
"port \(sender.port), addresses \(sender.addresses)")
}
Und hier empfangen kann mein Ergebnis ist
netServiceDidResolveAddress Servicenamen Webbers Mac mini vom Typ _myapp ._tcp., Port 5678, Adressen Optional ([< 1002162e c0a80205 00000000 00000000>, < 1c1e162e 00000000 fe800000 00000000 00bce7ad 24b4b7e8 08000000>])
c0a80205 ist die IP-I für => 192.168.2.5
suchen und die Adresse [Daten], sagt Apple-
Die Adressen des Dienstes. Dies ist ein NSArray von NSData-Instanzen, , von denen jede eine einzelne Struktur sockaddr enthält, die zur Verwendung mit connect (2) geeignet ist. Wenn für den Dienst keine Adressen aufgelöst wurden oder der Dienst noch nicht aufgelöst wurde, wird ein leeres NSArray zurückgegeben.
Ich verwechsle immer noch, warum Daten .btyes nicht verwenden können? Wie Apple sagt "Dies ist ein NSArray von NSData Instanzen" Aber ich kann es nicht wie NSData
Und wie die Adresse als lesbare IP-String auflösen?
Ich versuche, dies vor, aber das Ergebnis als ich nicht außer bekommen ...
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));
}
Jeder Vorschlag Hilfe sein wird, Dank