0

我敢肯定我离让这个工作只有几封信的距离,但也许不是......

在服务器端,我有这个(Java);

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

这与我的 Java 客户端或Bonjour 浏览器完美配合(服务在本地显示为“_mjdj._tcp.”)。所以在Java中这是有效的:

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调用,但之后没有。

4

1 回答 1

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

那是你的错误。你要

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

本地的。” 部分是域,因此您可以使用域“本地”。如果您愿意,但@""意味着使用默认注册域(包括但不一定限于“本地”)。您感到困惑的原因是Java API 很糟糕。它不应该像那样将服务类型和域压缩在一起。

请注意,您尝试使用@"local"失败,很可能是因为您忘记了尾随句点。我建议你只是使用@""

于 2010-09-14T00:53:37.817 回答