簡體   English   中英

如何使用Cocoa Touch發現網絡設備?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM