2017-03-28 4 views
0

Salut les amis J'utilise NETWROK SERVICE DISCOVERY dans l'application android pour trouver le type de service "_dockset._tcp". Je reçois avec succès la liste des appareils, mais je suis incapable d'obtenir la liste des InetAddres de tous les appareils. Je reçois seulement InetAdress du premier appareil découvert mais je veux InetAdress de tous les dispositifs découverts. Vous serez très reconnaissant pour votre aide. J'utiliseComment obtenir la liste d'InetAddress dans la découverte de service réseau?

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 





     } 
    }; 
} 

je suis confus comment itérer pour InetAddess

Répondre

0

Vous devez suivre le schéma NsdManager et adapter votre auditeur:

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

Vous devez effectuer des opérations sur les informations de service instances (hôte, type, etc) individuellement. Bien sûr, vous pouvez modifier les critères à ajouter à la liste, comme le filtrage pour le type de service et/ou le nom.

+0

Merci pour votre réponse, mais je ne vous ai pas explication.if (! MNsdServiceList.contains (serviceInfo)) { mNsdService.add (serviceInfo); mNsdManager.resolveService (....); } – LanguageMaster

+0

'mNsdServiceList' est simplement' List '. L'instruction consiste à vérifier si la liste contient nsdserviceinfo. –

+0

Mais je reçois seulement un serviceinfo de retour. il y a plus d'un appareil en réseau avec le service que je trouve. Dans la méthode onServiceFound, j'obtiens tous les périphériques, mais mon programme d'écoute de résolution ne résout qu'un seul périphérique. – LanguageMaster