【发布时间】:2016-07-05 07:05:43
【问题描述】:
只是在 swift 3 中尝试 Bonjour
这是我的代码,我可以接收委托
func netServiceDidResolveAddress(_ sender: NetService) {
print("netServiceDidResolveAddress service name \(sender.name) of type \(sender.type)," +
"port \(sender.port), addresses \(sender.addresses)")
}
这是我的结果
netServiceDidResolveAddress 服务名称 Webber 的 Mac mini 类型 _myapp._tcp.,端口 5678,地址可选([,])
c0a80205 是我要找的 IP => 192.168.2.5
地址是 [Data] ,Apple 说
服务的地址。这是 NSData 实例的 NSArray, 每个都包含一个适合使用的 struct sockaddr 连接(2)。如果没有为 服务或者服务还没有被解析,一个空的 NSArray 是 返回。
我仍然很困惑为什么 Data 不能使用 .btyes ? 正如苹果所说“这是一个 NSData 实例的 NSArray” 但是我不能像 NSData 那样使用它
以及如何将地址解析为可读的IP字符串?
我之前试过这个,但没有像我一样得到结果...
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));
}
任何建议都会有所帮助,谢谢
【问题讨论】:
标签: ios ipv4 swift3 nsnetservice nsnetservicebrowser