4
我试图使用JmDNS来检测网络上设备的添加和删除。这些添加工作正常,只要各自的服务向JmDNS注册,就会立即找到这些设备,但是,当设备从网络中移除时,它们永远不会注册到JmDNS。JmDNS设备删除检测
我试过定期调用jmDns.list(serviceName),但似乎它总是返回缓存值。
是否有可能使JmDNS注册移除设备?
这里是我用于注册服务和服务监听器(仅相关部分)中的代码:
服务:
JmDNS jmdns = JmDNS.create();
ServiceInfo service = ServiceInfo.create("_test._tcp.local.", "Test", 1234, 0, 0, false, "Test info");
jmdns.registerService(service);
服务监听器:
JmDNS jmDns = JmDNS.create();
jmDns.addServiceListener("_test._tcp.local.", new ServiceListener() {
@Override
public void serviceAdded(ServiceEvent event) {
System.out.println("Service added " + event.getInfo());
}
@Override
public void serviceRemoved(ServiceEvent event) {
System.out.println("Service removed " + event.getInfo());
}
@Override
public void serviceResolved(ServiceEvent event) {
System.out.println("Service resolved" + event.getInfo());
}
});
方法serviceRemoved()即使先前注册的设备不再启动,也不会调用。 我非常感谢任何帮助我解决问题。
更新:JmDNS确实知道设备从网络中丢失,但只有半小时后才能找到。有可能缩短这个时间吗?