我认为这可能是一个iOS错误。
我运行以下简单代码,以广播网络服务:
self.netService = [[NSNetService alloc] initWithDomain:@"local."
type:@"_testnetwork._tcp."
name:[[UIDevice currentDevice] name]
port:port];
self.netService.delegate = self;
[self.netService publish];
在另一台设备上,我运行此代码,以检测网络服务:
self.netServiceBrowser = [[NSNetServiceBrowser alloc] init];
self.netServiceBrowser.delegate = (id)self;
[self.netServiceBrowser searchForServicesOfType:@"_testnetwork._tcp." inDomain:@"local."];
接下来发生的事情是浏览器会检测网络服务第一次出现的时间,然后当服务消失时,大部分时间它都不会检测到它,并且仍然认为NSNetService仍在广播。有趣的是,这些应用程序可以在两台设备上停止,并且浏览器可以启动,并且仍会检测到当前正在广播的旧服务 - 它会挂起。
当服务出现和消失时,在Mac上的终端中使用此代码正确显示:
dns-sd -B _test._tcp
解决这个问题的方法是什么?这是iOS错误吗?