我认为这可能是一个 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错误吗?