我在解决在我的Android设备(Captivate,Android 2.2)上启动的zeroconf服务时遇到问题。在Ubuntu上使用avahi-discover我可以看到注册的服务很好,但是尝试解决它会出现错误“错误:org.freedesktop.Avahi.TimeoutError:超时达到”。这导致我的应用程序出现问题(用于救援工作/活动的ad-hoc消息共享)需要解析服务,以便接收其IP或链接本地名称及其端口。
注意:我的Android设备能够成功解析在其他设备上注册的zeroconf服务,例如我的Ubuntu计算机,因此这与asked before不同。
在android方面,代码不可能更简单:
serviceInfo = ServiceInfo.create("_fluidnexus._tcp.local.", "Fluid Nexus", 17894, "Fluid Nexus Zeroconf server for android");
jmdns.registerService(serviceInfo);
此代码是由Android服务启动的线程的一部分,该服务又由我的主Activity启动。所有jmdns调用都是在同一个线程中进行的。一个单独的线程接受该端口上的连接,并且不调用任何jmdns代码。
这似乎不是一个锁定问题,因为我能够毫无问题地发现/解决其他zeroconf服务,但说实话,在注册我自己的服务时,我并不完全清楚锁的生命周期使用机器人。
如果您想在上下文中查看代码,可以在github上找到。
任何帮助将不胜感激!感谢。