2017-05-05 5 views
0

NSDManagerクラスを使用してサービスのリストを検出するには、Google参照でコードを実装しましたが、サービスを検出しようとするとホストアドレスを取得できません。ディスカバリが開始されたときにnullを表示しています。私が参照したthis link同じネットワークに接続されたデバイスのリストを発見するために私はthis blogに続いて、同じネットワークに接続したときにすべてのサービスを取得しました。NSDでネットワークサービス情報を使用しているときにnullを表示

同じネットワークに接続されているサービス/デバイスのリストを取得するのは正しいですか?

私はコードを実行しようとすると、それがnull shows null

を示し

public void registerService(int port) { 
    NsdServiceInfo serviceInfo = new NsdServiceInfo(); 
    serviceInfo.setServiceName(SERVICE_NAME); 
    serviceInfo.setServiceType(SERVICE_TYPE); 
    serviceInfo.setPort(port); 

    nsdManager.registerService(serviceInfo, 
      NsdManager.PROTOCOL_DNS_SD, 
      registrationListener); 
} 

私の決意リスナー

public void initializeResolveListener() { 
    mResolveListener = new NsdManager.ResolveListener() { 
     @Override 
     public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) { 
      Log.e(TAG, "Resolve failed" + errorCode); 
     } 

     @Override 
     public void onServiceResolved(NsdServiceInfo serviceInfo) { 
      Log.v(TAG, "Resolve Succeeded. " + serviceInfo); 
      if (serviceInfo.getServiceName().equals(mService)) { 
       Log.d(TAG, "Same IP."); 
       return; 
      } 
      mService = serviceInfo; 

      int port = mService.getPort(); 
      InetAddress host = mService.getHost();   } 
    }; 
} 

でリスト

​​

登録されているサービスを発見するために、次のコードを試してみました

答えて

1

あなたがサービスを発見すると、それだけでPTRレコードです:

_http._tcp.local. type PTR, class IN, myService._http._tcp.local. 

あなたがホスト/ポート情報が必要な場合は、あなたも、それが自分で宣伝だそのレコードを解決する必要があります。

+0

特定のデバイスのポート番号とIPアドレスを取得できましたが、他のデバイスが見つかりませんでした... – Rognik

関連する問題