我使用Bonjour與NSNetService從我的iPhone發佈服務器。這一切都按預期工作,我可以瀏覽我正在服務的頁面等。但是,在iPhone上我想顯示主機名稱(即URL,如「myDevice.local。」),以便還可以輸入在瀏覽器中手動尋址(對於缺少bonjour發現服務的客戶端有用)。我的理解是,調用方法[myNetService hostName]應該給我那個地址。但是,這個調用總是返回nil。我在一些論壇上閱讀,我首先應該解決的服務,但是兩者[myNetService解析]和[myNetService resolveWithTimeout:10]調用的委託方法NSNetService工作正常,但無法獲得hostName,解決原因錯誤
- (void)netService:(NSNetService *)sender didNotResolve:(NSDictionary *)errorDict;
與錯誤
{
NSNetServicesErrorCode = -72003;
NSNetServicesErrorDomain = 10;
}
這顯然意味着它已經解決了。同樣,所有這些都在我可以使用該服務的情況下發生。另外我可以獲得端口,域和服務的類型。唯一另外一件奇怪的事情是調用[myNetService addresses]返回一個空數組。
我正在使用SDK 3.1.3。有沒有人知道我可能做錯了什麼?
非常感謝你,這解決了我的問題!我不知道我怎麼會錯過這個方法。我仍然想知道爲什麼其他方法失敗。 – mkeiser
AcDcP有更好的答案 - 不僅出於下面所述的原因,還因爲(因爲我發現困難的方式)NSProcessInfo主機名稱調用和阻塞很長一段時間。這可能會導致應用程序鎖定或(如果在啓動期間提前查找主機名)導致它由於啓動超時而被iOS殺死。 – sckor