安卓 JmDNS 如何删除服务



im目前正在编写一个Android应用程序,该应用程序应该使用JmDNS跟踪同一wifi网络中的其他设备。 发现过程工作正常,但我不知道如何跟踪其他设备,尤其是注意到它们的删除。

如中所述 JmDNS 设备删除检测似乎我必须自己实现此回调,但我不知道如何做到这一点。似乎 JmDNS API 没有提供任何自己发布服务消息的方法。

到目前为止,我的想法:

  • 使用发现的套接字连接跟踪更改
  • 不时使用 JmDNS.requestServiceInfo() 检查服务是否仍然可用
  • 取消/注册服务 + 侦听器,以便他们可以再次找到彼此

有没有人知道解决此问题的另一种方法,或者可以告诉我如何触发serviceRemoved()回调?

PS:在采用这种方法之前,我尝试了Androids-NSD API,它似乎很不稳定。

以下是我在实验时发现的一些事情:

DNS 缓存设置为 1 小时,这意味着只要该计数器未完成,侦听器就不会删除服务。

我犯的错误是在 wifi 关闭后取消注册我的服务。 服务发送广播消息,指出它们不再可用。如果 wifi 连接已关闭,则无法发送此消息。

因此,与其在wifi连接后调用JmDNS.unregisterAllServices(),我必须在它可用时调用它。这会导致在侦听器中触发 onServiceRemoved() 回调

最新更新