Android JmDNS如何删除服务

时间:2017-06-16 14:55:27

标签: android zeroconf jmdns nsd

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

如上所述 JmDNS device removal detection我似乎必须自己实现这个回调,但我不知道如何做到这一点。似乎JmDNS Api没有提供任何方法来自己发布服务消息。

到目前为止我的想法:

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

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

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

1 个答案:

答案 0 :(得分:0)

所以这里有一些我在试验时想到的东西:

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

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

所以不要在wifi连接后调用JmDNS.unregisterAllServices(),而是在它可用时调用它。这导致在侦听器中触发onServiceRemoved()回调函数