2017-10-25 11 views
0

ローカルエリアネットワークで接続デバイスをスキャンし、接続デバイスのIPアドレスを返すアプリケーションを作成しています。LAN上の接続されたデバイスのIPアドレスを照会する方法

私のスキャナは、IPアドレスの範囲内の各IPに「ping」することで構成されています。 IPアドレスの範囲を調べるこのプロセスには時間がかかります。

次に、基本的に有効なIPアドレスまたは接続されたデバイスのIPアドレスのリストであるWindowsマシンにARP(アドレス解決プロトコル)キャッシュと呼ばれるものがあることを知りました。

AndroidはWindowsではないので、単にAPIなどを使用して同様のテーブルにアクセスする方法はありますか?

Tlの、アンドロイド

博士どのように私は、ネットワーク上で有効なIPアドレスを照会することができます(それらをpingできない)

答えて

0

は、私がこれまでに思い付いたベストソリューションは、ARPは、ファイルパスでAndroidデバイスにファイルを読み込むことだった/proc/net/arp

はここで単純なテキストビューでファイルの内容を表示するアプリケーションのための主な活動クラスの

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     TextView tv = (TextView) findViewById(R.id.textView); 

     // Get an array list of mac to IP address mapping 
     ArrayList<String> arpTableLines = getArpTableLines(); 

     // Generate a string to display in the text view based on the mapping 
     String textViewText = getTextViewText(arpTableLines); 

     // Set the text view value 
     tv.setText(textViewText); 
    } 

    public ArrayList<String> getArpTableLines(){ 

     ArrayList<String> lines = new ArrayList<>(); 

     try{ 

      String line = ""; 

      BufferedReader localBufferdReader = 
        new BufferedReader(new FileReader(new File("/proc/net/arp"))); 

      while ((line = localBufferdReader.readLine()) != null) { 
       String[] ipmac = line.split("[ ]+"); 
       if (!ipmac[0].matches("IP")) { 
        String ip = ipmac[0]; 
        String mac = ipmac[3]; 
        lines.add(ip + " <~> " + mac); 
       } 
      } 

     }catch (FileNotFoundException ex){ 
      Log.v("TAG",Log.getStackTraceString(ex)); 
     } catch (IOException ex){ 
      Log.v("TAG",Log.getStackTraceString(ex)); 
     } 

     return lines; 
    } 

    public String getTextViewText(ArrayList<String> lines){ 
     String result = ""; 
     for(String line : lines) result += line + "\n"; 
     return result; 
    } 
} 
関連する問題