Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从iOS向JmDNS问好:什么';你叫什么名字?_Java_Cocoa_Ios_Bonjour - Fatal编程技术网

Java 从iOS向JmDNS问好:什么';你叫什么名字?

Java 从iOS向JmDNS问好:什么';你叫什么名字?,java,cocoa,ios,bonjour,Java,Cocoa,Ios,Bonjour,我敢肯定,我只差几封信就可以让这项工作开始了,但也许不是 在服务器端,我有这个(Java) 这与我的Java客户机或a(服务在本地显示为“mjdj._tcp.”)完美配合。因此,在Java中,这是可行的: jmdns.list("_mjdj._tcp.local."); 但是从iOS客户端我似乎找不到服务(或其他东西)。我已经准备好了委托方法,但是 NSNetServiceBrowser *browser = [[[NSNetServiceBrowser alloc] init] autore

我敢肯定,我只差几封信就可以让这项工作开始了,但也许不是

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

这与我的Java客户机或a(服务在本地显示为“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;
}
如果我这样做(猜测)

netServiceBrowserWillSearch
会被调用,但之后什么也不会被调用

[browser searchForServicesOfType:@"_mjdj._tcp.local." inDomain:@""];
那是你的错误。你想要

[browser searchForServicesOfType:@"_mjdj._tcp." inDomain:@""];
“local.”部分是域,因此您可以使用域“local.”如果需要,但是
@“
意味着使用默认注册域(包括但不一定限于“local”)。您感到困惑的原因是因为JavaAPI不好。它不应该像那样将服务类型和域挤在一起


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

你好,凯文,非常感谢你的回答。我现在已经尝试了推荐的空白
inDomain
\u mjdj.\u tcp.
,没有一个委托方法在
netservicebrowserverwillsearch
之外触发。。。也许是我在里面运行的iPhone模拟器?虽然它连接到Java端的套接字没有问题,只是在“设备”(iPod)上试用了一下,也没用。嗯。。。也许我下一步应该试试直接的Mac应用程序。如果你愿意花3美元来帮助调试这个问题,我有一个为iPhone编写的Bonjour浏览器版本。它被调用,您可以使用它来查看您的服务在设备上是否可见。我很高兴,但我敢打赌另外3美元,您可以从设备上看到服务。现在…如果您有任何关于发现的功能请求,请务必告诉我。至于Bonjour浏览器本身,您可以发送请求,但我已经打算重写它大约4年了,所以不要指望我会走得很快;)查找错误代码总是很有帮助的。如果您对该代码执行此操作,您会发现它是
NSNetServicesBadArgumentError
(或者
kCFNetServiceErrorBadArgument
,如果您查看Core Foundation)。谢谢@Peter Hosey。事实证明,问题在于我没有保留浏览器(正如你在上面看到的,我是自动删除的)。
[browser searchForServicesOfType:@"_mjdj._tcp.local." inDomain:@""];
[browser searchForServicesOfType:@"_mjdj._tcp." inDomain:@""];