[英]How to discover network devices with Cocoa Touch?
我希望能夠從運行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:@""];
[serviceBrowser searchForServicesOfType:@"_ipp._tcp." inDomain:@""];
決議工作正常。
那么,我是否在NSNetServiceBrowser的正確軌道上,或者是否有其他方法可以讓我枚舉連接到我網絡的設備的名稱?
這是正確的方法 。 可能,您有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:@""];
試試看,如果你沒有運氣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.