2017-09-27 4 views
0

Ich verwende derzeit Network Service Discovery, um HTTP-Dienste in meinem lokalen Netzwerk zu erkennen. Ich habe das Google Android NSDChat-Projektbeispiel verwendet und es gibt mir nur die Hostnamen zurück, jedoch die Host-IP-Adresse NULL.Android NSD-Host gibt NULL zurück

Dies ist meine Funktion, die die Hostnamen

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); 

    } 
}; 
} 

Antwort

Verwandte Themen