GellaFu 2016-08-17 07:39 采纳率: 0%
浏览 1945

NSNetServiceBrowser 不能发现已存在的服务

局域网内服务已经发布,在终端使用命令: dns-sd 可以检测到。

写了一个很简单的应用来发现服务,安装在测试手机(ios9.3)可以立即发现服务;但是安装在另一个测试机(ios8.4)上却没有立即找到设备(只调用netServiceBrowserWillSearch后没有其他反应)。有时过了很长时间才会发现服务,有时却会立即出现,概率性出现。
安装了Bonjour Browser应用来debug,ios9设备上回立即出现,但是同一时间8.4设备上却一直在scanning,有时过了1min才会出现结果,有时等了2min都没有出现结果。

代码很简单如下:
- (void) start
{
NSLog(@"start to search service");
if ( _bonjourServiceBrowser != nil ) {
[self stop];
}
_bonjourServiceBrowser = [[NSNetServiceBrowser alloc] init];

    [_bonjourServiceBrowser scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
_bonjourServiceBrowser.delegate = self;
    [_bonjourServiceBrowser searchForServicesOfType:@"_pp._tcp." inDomain:@"local."];

}

- (void) netServiceBrowser:(NSNetServiceBrowser *)netServiceBrowser
    didFindService:(NSNetService *)netService
        moreComing:(BOOL)moreServicesComing {
    NSLog(@"did found service and service name is : %@ and more %d", netService.name,moreServicesComing);

}

-(void)netServiceBrowser:(NSNetServiceBrowser *)browser didNotSearch:(NSDictionary<NSString *,NSNumber *> *)errorDict {
    NSLog(@"not search ");
}

-(void)netServiceBrowserWillSearch:(NSNetServiceBrowser *)browser {
    NSLog(@"will search");
}


有哪位大牛能帮忙分析一下?谢谢
  • 写回答

2条回答 默认 最新

  • GellaFu 2016-08-17 07:47
    关注

    苹果的Bonjour协议接口内部实现有更新吗?(从ios8 到ios9),或者是我写的代码哪里有问题,或者手机属性需要设置?

    评论

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站