が私のコードですが、私は、デリゲートスイフト3 NetService IPを解決する方法は?ただ、ここで迅速な3</p> <p>でのBonjourをしようと
func netServiceDidResolveAddress(_ sender: NetService) {
print("netServiceDidResolveAddress service name \(sender.name) of type \(sender.type)," +
"port \(sender.port), addresses \(sender.addresses)")
}
を受け取ることができ、ここに私の結果は
netServiceDidResolveAddressサービス名ウェバーのMac miniタイプの _myappです._tcp。、ポート5678、アドレスオプション([< 1002162e c0a80205 00000000 00000000>、< 1c1e162e 00000000 fe800000 00000000 00bce7ad 24b4b7e8 08000000>])
c0a80205はIP私は=> 192.168.2.5
を探していると、アドレスが[データ]で、アップルはサービスの
アドレスを言います。 NSDataインスタンスのNSArray、 それぞれには、 connect(2)で使用するのに適した単一のstruct sockaddrが含まれています。 サービスでアドレスが解決されていない場合、またはサービスがまだ解決されていない場合は、空のNSArrayは です。
なぜ、データで.btyesを使用できないのか混乱しますか? アップルは "これはNSDataインスタンスのNSArrayです" しかし、私はNSDataのように使用することはできません
そして、読み取り可能なIP文字列としてアドレスを解決するにはどうすればいいですか?
私は、OK ...これはスマートな答えはない
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));
}
任意の提案が助けになり、おかげで