2015-06-24 45 views
0

经过几个小时的搜索之后,我进入了看起来像死胡同的状态。在这种情况下,我所要做的就是使用Bonjour获取网络的所有iOS设备。我这样做了这样的使用NSNetService获取远程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

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

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

+0

有了iTunes WiFi Sync,我确实能够做到这一点!我得到了设备名称和IP地址。取而代之的是创建一个新的服务,将循环的服务对象的委托设置为self,并使用超时值30解决。'[service setDelegate:self]; [service resolveWithTimeout:30];'我发现iOS 9和iOS 8有不同的端口。所以这就是为什么上面的代码不起作用,这在我的iOS 8 iPad上很好,但在我的iOS 9测试版iPhone上却没有。 – isklikas