簡體   English   中英

iPhone SDK:Bonjour和NSNetService名稱!=已發布的名稱?

[英]iPhone SDK: Bonjour & NSNetService name != published name?

在我的iPhone應用程序中,我發布了一個bonjour服務並使用以下委托方法:

- (void)netServiceDidPublish:(NSNetService *)ns
{
   NSLog(@"Bonjour Service Published: http://%@.%@", [ns name], [ns domain]);
}

“name”屬性返回設備名稱“How's Testing”,這是正確的。 但是,當我使用Safari發現可用服務時,名稱是“hows-testing” - 該服務是http://hows-testing.local.:somePortNumber

為什么發布的名稱與NSNetService報告的名稱不同? 如何顯示已發布服務的實際名稱? 假設由於某種原因,無法從對象中獲取已發布的名稱,我該如何自行確定? 我知道它基於設備名稱,但替換規則是什么? 刪除撇號,用破折號替換空格......其他什么? 特殊字符怎么樣?

我認為“hows-testing”是計算機的主機名,而不是服務的名稱。 相反,您想要查看hostName屬性:

- (void)netServiceDidPublish:(NSNetService *)ns
{
   NSLog(@"Bonjour Service Published: http://%@", [ns hostName]);
}

您應該檢查端口屬性,並將其包含在URL中,如果該端口不是該協議的默認端口(HTTP為80)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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