如何获取网络服务发现中的InetAddress列表?

时间:2017-03-28 12:08:13

标签: android nsd

嗨朋友我在Android应用中使用NETWROK SERVICE DISCOVERY来查找服务类型" _dockset._tcp"。我成功获取设备列表但我无法获得所有设备的InetAdd列表。我只获得了第一个被发现设备的InetAdress,但我想要发现所有设备的InetAdress。您将非常感谢您的帮助。我正在使用

public void startResolveListener(){
    mResolveListener= new NsdManager.ResolveListener() {
        @Override
        public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) {
            Log.d("resolve service failed"," with error"+errorCode);
        }

        @Override
        public void onServiceResolved(NsdServiceInfo serviceInfo) {
            ;
            int port=serviceInfo.getPort();



            InetAddress host=serviceInfo.getHost();

            mHost=String.valueOf(host);//here i am getting one host





        }
    };
}

我很困惑如何迭代InetAddess

1 个答案:

答案 0 :(得分:0)

您需要遵循NsdManager图表并使您的听众适应:

mResolveListener= new NsdManager.ResolveListener() {
        @Override
        public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) {
            Log.d("resolve service failed"," with error"+errorCode);
            mNsdServiceList.remove(serviceInfo);
        }

        @Override
        public void onServiceResolved(NsdServiceInfo serviceInfo) {
              if(!mNsdServiceList.contains(serviceInfo)){
                  mNsdService.add(serviceInfo);
                  mNsdManager.resolveService(....);
              }
        }
    };

您需要单独对服务信息实例(主机,类型等)执行操作。当然,您可以修改标准以进一步添加到列表,例如过滤服务类型和/或名称。