0

Hi friends I am using NETWROK SERVICE DISCOVERY in android app to find service type "_dockset._tcp". I am successfully getting device list but I am unable to get list of InetAddres of all devices. I am only getting InetAdress of first discovered device but I want InetAdress of all devices discovered. Your will be much thankful for your help. I am using

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





        }
    };
}

i am confused how to iterate for InetAddess

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115

1 Answers1

0

You need to follow the NsdManager diagram and adapt your listener to:

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(....);
              }
        }
    };

You need to perform operations on service info instances (host, type, etc) individually. Of course you can modify the criteria to add to list further, like filtering for service type and/or name.

Nikola Despotoski
  • 49,966
  • 15
  • 119
  • 148
  • Thanks for your answer but i dont got you explanation.if(!mNsdServiceList.contains(serviceInfo)){ mNsdService.add(serviceInfo); mNsdManager.resolveService(....); } – LanguageMaster Mar 28 '17 at 12:52
  • `mNsdServiceList` is just a `List`. The statement is to check if the list contains that nsdserviceinfo. – Nikola Despotoski Mar 28 '17 at 12:57
  • But i am getting only one serviceinfo back. there are more than one devices in network with the service i am finding. In onServiceFound Method I am getting all devices but my resolve listener resolve only one device – LanguageMaster Mar 28 '17 at 13:01