2017-09-27 21 views
0

현재 로컬 네트워크에서 HTTP 서비스를 검색하기 위해 네트워크 서비스 검색을 사용하고 있습니다. 나는 구글 안드로이드 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); 

    } 
}; 
} 

답변