在我的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报告的名称不同?如何显示已发布服务的实际名称?假设由于某种原因,无法从对象中获取已发布的名称,我该如何自行确定?我知道它基于设备名称,但替换规则是什么?删除撇号,用破折号替换空格......其他什么?特殊角色怎么样?
答案 0 :(得分:1)
我认为“hows-testing”是计算机的主机名,而不是服务的名称。相反,您想要查看 hostName 属性:
- (void)netServiceDidPublish:(NSNetService *)ns
{
NSLog(@"Bonjour Service Published: http://%@", [ns hostName]);
}
您应该检查端口属性,并将其包含在URL中,如果该端口不是该协议的默认端口(HTTP为80)