1

我在解决我的 Android 设备(Captivate,Android 2.2)上启动的 zeroconf 服务时遇到问题。在 Ubuntu 上使用 avahi-discover 我可以很好地看到注册的服务,但尝试解决它会出现“错误:org.freedesktop.Avahi.TimeoutError:已达到超时”的错误。这给我的应用程序(救济工作/行动的临时消息共享)造成了问题,该应用程序需要解析服务才能接收其 IP 或链接本地名称及其端口。

注意:我的 Android 设备能够成功解析在其他设备上注册的 zeroconf 服务,例如我的 Ubuntu 机器,因此这与之前询问的问题不同。

在 android 端,代码再简单不过了:

serviceInfo = ServiceInfo.create("_fluidnexus._tcp.local.", "Fluid Nexus", 17894, "Fluid Nexus Zeroconf server for android");
jmdns.registerService(serviceInfo);

此代码是由 Android 服务启动的线程的一部分,该服务又由我的主 Activity 启动。所有 jmdns 调用都是在同一个线程中进行的。一个单独的线程接受该端口上的连接并且不调用任何 jmdns 代码。

这似乎不是锁定问题,因为我能够毫无问题地发现/解决其他 zeroconf 服务,但老实说,在 Android 上注册我自己的服务时,我并不完全清楚锁定的生命周期使用。

如果您想在上下文中查看代码,可以在github上找到它。

任何帮助,将不胜感激!谢谢。

4

0 回答 0