代码之家  ›  专栏  ›  技术社区  ›  memmons

iPhone SDK:Bonjour&NSNetService name!=公开的名字?

  •  3
  • memmons  · 技术社区  · 16 年前

    在我的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报告的名称不同?如何显示已发布服务的实际名称?假设由于某种原因,无法从对象中获取已发布的名称,我自己如何确定它?我知道这是基于设备名的,但替换规则是什么?去掉撇号,用破折号替换空格…还有别的吗?特殊人物呢?

    1 回复  |  直到 16 年前
        1
  •  1
  •   allenporter    16 年前

    我相信“hows testing”是计算机的主机名,而不是服务的名称。相反,你想看看 主机名

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

    港口