在我的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报告的名称不同?如何显示已发布服务的实际名称?假设由于某种原因,无法从对象中获取已发布的名称,我如何自己确定它呢?我知道它是基于设备名称的,但是替换规则是什么呢?删除撇号,用dash...anything替换空格,否则?那么特殊字符呢?
发布于 2010-06-08 12:50:28
我相信“hows- that”是计算机的主机名,而不是服务的名称。相反,您需要查看hostName属性:
- (void)netServiceDidPublish:(NSNetService *)ns
{
NSLog(@"Bonjour Service Published: http://%@", [ns hostName]);
}您可能还应该检查端口的属性,如果该端口不是该协议的默认端口(对于HTTP80),则将其包含在URL中
https://stackoverflow.com/questions/2913951
复制相似问题