2017-09-27 7 views
0

Je suis actuellement en train d'utiliser la découverte de service réseau pour détecter les services HTTP sur mon réseau local. J'ai utilisé l'exemple de projet Google Android NSDChat, et il me renvoie seulement les noms d'hôte, cependant, l'adresse IP de l'hôte NULL.Android NSD Host renvoie NULL

C'est ma fonction qui renvoie le nom d'hôte

public void onServiceFound(NsdServiceInfo service) { 

     Log.d(TAG, "Service discovery success" + service.getHost()); 

     //pref.putString("name", service.getServiceName()); 
     if (!service.getServiceType().equals(SERVICE_TYPE)) { 
      Log.d(TAG, "Unknown Service Type: " + service.getServiceType()); 
     } else if (service.getServiceName().equals(mServiceName)) { 
      Log.d(TAG, "Same machine: " + mServiceName); 
     } else if (service.getServiceName().contains(mServiceName)){ 
      mNsdManager.resolveService(service, mResolveListener); 
     } 


    } 


public void initializeResolveListener() { 

mResolveListener = new NsdManager.ResolveListener() { 

    @Override 
    public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) { 
     // Called when the resolve fails. Use the error code to debug. 
     Log.e(TAG, "Resolve failed" + errorCode); 
    } 

    @Override 
    public void onServiceResolved(NsdServiceInfo serviceInfo) { 
     Log.e(TAG, "Resolve Succeeded. " + serviceInfo); 

     if (serviceInfo.getServiceName().equals(mServiceName)) { 
      Log.d(TAG, "Same IP."); 
      return; 
     } 
     mService = serviceInfo; 
     int port = mService.getPort(); 
     host = mService.getHost(); // getHost() will work now 
     Log.d(TAG, "Service discovery success" + host); 

    } 
}; 
} 

Répondre