当前位置:  开发笔记 > IOS > 正文

如何使用Cocoa Touch发现网络设备?

如何解决《如何使用CocoaTouch发现网络设备?》经验,为你挑选了1个好方法。

我希望能够从运行iPhone OS 3.x(iPhone/iPad)的设备枚举本地网络上的设备名称.我已经尝试使用NSNetServiceBrowser来查找所有服务,如下所示:

[serviceBrowser searchForServicesOfType:@"_services._dns-sd._udp." inDomain:@"local."];

这会返回结果但是当我尝试解析地址时,我会收到以下错误

NSNetServicesErrorCode = -72004;
NSNetServicesErrorDomain = 10;

我查了一下错误,看来有一个不好的论点?

[kCFNetServiceErrorBadArgument
A required argument was not provided or was not valid.]

如果我做一个服务特定搜索像 [serviceBrowser searchForServicesOfType:@"_ipp._tcp." inDomain:@""];分辨率工作正常.

那么,我是否在NSNetServiceBrowser的正确轨道上,或者是否有其他方法可以让我枚举连接到我网络的设备的名称?



1> tdbit..:

这是正确的方法.潜在地,你有一个原因NSNetServicesBadArgumentError是因为你的serviceType字符串@"_services._dns-sd._udp."是无效的尝试,@"_services._dns-sd._udp"即没有尾随期.

Apple的文档在这一点上令人困惑.在NSNetServiceBrowser类参考中,它声明:

serviceType参数必须包含服务类型和传输层信息.要确保mDNS响应程序搜索服务而不是主机,请确保在服务名称和传输层名称前面加上下划线字符("_").例如,要在TCP上搜索HTTP服务,可以使用类型字符串"_http._tcp.".请注意,结尾处的句点字符是必需的.

但是,在NSNetServices和CFNetServices编程指南中,初始化浏览器和开始搜索的示例显然不会使用最后一个句点:

serviceBrowser = [[NSNetServiceBrowser alloc] init];
[serviceBrowser setDelegate:delegateObject];
[serviceBrowser searchForServicesOfType:@"_music._tcp" inDomain:@""];

试试看,如果你没有运气.

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有