2017-09-27 141 views
0

我目前使用网络服务发现来检测本地网络上的HTTP服务。我使用了Google Android NSDChat项目示例,它只向我返回主机名,但主机IP地址为NULL。Android NSD主机返回NULL

这是我的函数将返回主机名

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

    } 
}; 
} 

回答