2017-03-28 8 views
0

こんにちは友人アンドロイドアプリでNETWROK SERVICE DISCOVERYを使って "_dockset._tcp"サービスタイプを探しています。私は正常にデバイスリストを取得していますが、私はすべてのデバイスのInetAddresのリストを取得することができません。私は最初に発見されたデバイスのInetAdressを取得するだけですが、私はすべてのデバイスのInetAdressを発見します。あなたのお手伝いに大変感謝しています。あなたは、サービス情報の操作を実行する必要がネットワークサービスディスカバリでInetAddressのリストを取得するには?

mResolveListener= new NsdManager.ResolveListener() { 
     @Override 
     public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) { 
      Log.d("resolve service failed"," with error"+errorCode); 
      mNsdServiceList.remove(serviceInfo); 
     } 

     @Override 
     public void onServiceResolved(NsdServiceInfo serviceInfo) { 
       if(!mNsdServiceList.contains(serviceInfo)){ 
        mNsdService.add(serviceInfo); 
        mNsdManager.resolveService(....); 
       } 
     } 
    }; 

:私はどのようにInetAddess

答えて

0

のために反復するあなたはNsdManager図に従うとするリスナーを適応させる必要がある、私は混乱しています

public void startResolveListener(){ 
    mResolveListener= new NsdManager.ResolveListener() { 
     @Override 
     public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) { 
      Log.d("resolve service failed"," with error"+errorCode); 
     } 

     @Override 
     public void onServiceResolved(NsdServiceInfo serviceInfo) { 
      ; 
      int port=serviceInfo.getPort(); 



      InetAddress host=serviceInfo.getHost(); 

      mHost=String.valueOf(host);//here i am getting one host 





     } 
    }; 
} 

を使用していますインスタンス(ホスト、タイプなど)を個別に指定します。もちろん、サービスタイプや名前のフィルタリングのように、さらに一覧に追加する基準を変更することもできます。

+0

あなたの答えをありがとうが、私はあなたexplain.ifを持っていない(!mNsdServiceList.contains(serviceInfo)){ mNsdService.add(serviceInfo); mNsdManager.resolveService(....); } – LanguageMaster

+0

'mNsdServiceList'はちょうど' List 'です。この文は、そのリストにそのnsdserviceinfoが含まれているかどうかを確認するものです。 –

+0

しかし、私はserviceinfoを1つだけ戻しています。私は探しているサービスとネットワークに複数のデバイスがあります。 onServiceFoundメソッドではすべてのデバイスが取得されていますが、解決リスナーでは1つのデバイスのみが解決されます – LanguageMaster

関連する問題