首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JmDNS器件去除检测

JmDNS器件去除检测
EN

Stack Overflow用户
提问于 2014-01-18 09:17:42
回答 1查看 986关注 0票数 4

我试图使用JmDNS来检测网络上设备的添加和删除。加法工作正常,设备一旦在JmDNS中注册它们各自的服务就会被找到,但是,当一个设备从网络中删除时,它永远不会在JmDNS中注册。

我尝试过周期性地调用jmDns.list(serviceName),但似乎它总是返回缓存的值。

是否有可能使JmDNS寄存器删除设备?

下面是我用来注册服务和服务侦听器(只有相关部分)的代码:

服务:

代码语言:javascript
复制
JmDNS jmdns = JmDNS.create();
ServiceInfo service = ServiceInfo.create("_test._tcp.local.", "Test", 1234, 0, 0, false, "Test info");
jmdns.registerService(service);

服务听众:

代码语言:javascript
复制
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()从未被调用,即使以前注册的设备不再启用。我非常感谢在解决这个问题上能得到的任何帮助。

Update:JmDNS确实发现网络中缺少设备,但只在半小时之后。有可能缩短这段时间吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-19 08:29:51

只有当被删除的设备在关闭之前取消注册时,才会调用serviceRemoved()方法。JmDNS并不是在主动检查设备的存在,而只是在监听广播消息。如果被删除的设备本身没有注销,JmDNS永远不知道它会在30分钟内使用超时点击。一种检查设备是否仍然存在的可能性是主动询问它。有几种方法可以做到这一点。我不知道JmDNS是否已经有一些构建,如果是这样的话。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21202240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档