使用NSNetService获取远程iOS设备的HostName

时间:2015-06-24 18:56:49

标签: ios objective-c cocoa bonjour nsnetservice

经过几个小时的搜索,我看到了一个看似死路一条的东西。在这种情况下,我想要做的就是使用Bonjour获取网络的所有iOS设备。我这样做了

self.serviceBrowser = [[NSNetServiceBrowser alloc] init];
[self.serviceBrowser setDelegate:self];
[self.serviceBrowser searchForServicesOfType:@"_apple-mobdev2._tcp." inDomain:@"local."];

这很好,虽然我得到的是以下内容:

local. _apple-mobdev2._tcp. [MAC ADDRESS HERE]

我尝试使用同步端口(62078)解析连接,因为service.port返回-1。

for (NSNetService *service in self.services) {
    NSLog(@"%@", service);
        NSNetService *newService = [[NSNetService alloc] initWithDomain:service.domain type:service.type name:service.name port:62078];
        [newService setDelegate:self];
        [newService resolveWithTimeout:30];
}

这本身就是调用netServiceWillResolve:完全没有问题,但是它没有进入netServiceDidResolveAddress:

但这也不会失败。 netService:didNotResolve:也没有被调用,我相信它只是在等待响应得到解决。

为了支持这种说法,一旦它确实进入了该方法并实际上[service hostName];确实回归了Yanniss-iPhone,但这发生在一个完全随机的时间,我让Mac App运行了大约半个小时。有什么可以调用它来运行?或者有没有人知道获取远程设备的hostName的不同方法?其他答案没有回答我的问题,因为我正在寻找远程设备的hostName,而不是Mac设备。

相对于此,我发现当你杀死并重启iTunes以及iTunes Helper时,我再次发送下面提到的日志。这就是为什么我认为正确的日志是与iTunes相关的事件。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

iTunes搜索bonjour的wifi同步功能。至于didNotResolve或解决延迟,bonjour服务会在几秒到30分钟之间随机投射。

我实际上也尝试连接到iOS设备,但我无法获得任何响应或返回任何设备。 :\