代码之家  ›  专栏  ›  技术社区  ›  Dan Rosenstark

从IOS到JMDNS的你好:名字是什么?

  •  0
  • Dan Rosenstark  · 技术社区  · 14 年前

    我肯定我离这个工作只有几封信了,但也许不是…

    在服务器端,我得到了这个(Java);

    ServiceInfo info = ServiceInfo.create("_mjdj._tcp.local.", "foo", 1268, 0, 0, "path=index.html");
    jmdns.registerService(info);
    

    这与我的Java客户端或 Bonjour Browser (服务在本地显示为“_mjdj._tcp.”)。所以在爪哇这样做:

    jmdns.list("_mjdj._tcp.local.");
    

    但从一个iOS客户端,我似乎找不到服务(或其他东西)。我已经有了委托方法,但是这个

    NSNetServiceBrowser *browser = [[[NSNetServiceBrowser alloc] init] autorelease];
    [browser setDelegate:self];
    [browser searchForServicesOfType:@"_mjdj._tcp.local." inDomain:@""];
    

    产生此错误

    {
     NSNetServicesErrorCode = "-72004";
     NSNetServicesErrorDomain = 10;
    }
    

    如果我这样做(猜测)

    [browser searchForServicesOfType:@"_mjdj._tcp." inDomain:@"local"];
    

    这个 netServiceBrowserWillSearch 接到电话后什么都没有。

    1 回复  |  直到 9 年前
        1
  •  1
  •   Lily Ballard    14 年前
    [browser searchForServicesOfType:@"_mjdj._tcp.local." inDomain:@""];
    

    这是你的错误。你想要

    [browser searchForServicesOfType:@"_mjdj._tcp." inDomain:@""];
    

    “local.”部分是域,因此您可以使用域“local.”如果需要,但是 @"" 表示使用默认注册域(包括但不一定限于“本地”)。你之所以困惑是因为Java API是坏的。它不应该像那样将服务类型和域挤在一起。

    请注意,您尝试使用 @"local" 失败,很可能是因为您忘记了后面的句号。我建议你只用 @ 不过。