繁体   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