首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重复JmDNS设备搜索

重复JmDNS设备搜索
EN

Stack Overflow用户
提问于 2013-12-28 12:34:50
回答 2查看 674关注 0票数 0

我想每5秒扫描一次Bonjour设备(_http._tcp.local.),并得到一个包含找到的设备的数组列表(名称,所以字符串)。我需要在服务(以及后台线程)中这样做。

现在,我每隔5秒就会有一个新的JmDNS (JmDNS.create())实例,这会泄漏内存;)。我想一定有更好的方法,但我不知道.有谁能帮帮我呢?

代码语言:javascript
复制
 try {
      final JmDNS jm;
      ArrayList<String> foundDevices = new ArrayList<String>();
      jm = JmDNS.create();
      jm.addServiceListener("_http._tcp.local.", listener = new ServiceListener() {
      @Override
      public void serviceAdded(ServiceEvent event) {
            jm.requestServiceInfo(event.getType(), event.getName(), 1);
      }

      @Override
             public void serviceRemoved(ServiceEvent event) {
      }

      @Override
      public void serviceResolved(ServiceEvent event) {
             JSONObject obj = null;
             ServiceInfo info = event.getInfo();
             //Log.e("TCLogging", "RAW: " + info);

             String Name = info.getName();
             foundDevices.add(Name);

             } catch (Exception e) {
                 Log.e("TCLogging", "Error");
             }
         }
      });
      ServiceInfo serviceInfo = ServiceInfo.create("_http._tcp.", "TC_" + android.os.Build.MODEL, 0, "AndroidApp");
      jm.registerService(serviceInfo);


      } catch (Exception e) {
          Log.e("TCLogging", e.toString());
      }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-28 14:09:04

您可以每N秒调用一次JmDNS.list(字符串类型),这将返回它找到的服务的ServiceInfo。第一个调用需要时间(您可以通过列表的过载 (字符串类型,长超时)来控制它),缺省值似乎是6秒。

票数 1
EN

Stack Overflow用户

发布于 2015-03-19 18:36:58

关于JmDNS,我不知道的是,当一个设备在网络中被发现或消失时,您会得到通知。我想每隔N秒钟扫描一次,看看网络中有哪些设备。但是,只要等到收到任何设备更改的通知后,就会更容易(而且更少的资源密集型)等待。

接受的答案确实对我工作,实现扫描每N秒,但这不是最理想的方式做它!

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

https://stackoverflow.com/questions/20814604

复制
相关文章

相似问题

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