3

Androidフォンを使用してPCのIPアドレスを取得する方法は? (特に、Android フォンと同じネットワークに接続された、特定の MAC アドレスを持つシステムの IP アドレスを取得する方法)?

       wired         wired    
modem--------router---------PC(mac:EE:00:B3:2F:56:12)
               |
               |
               |
             wireless
               |
               |
               |
               -------------android phone(A)  
4

1 に答える 1

3
private String getIP(String mac) {
  String ip = null;
  try {
    BufferedReader br = new BufferedReader(new FileReader("/proc/net/arp"));
    String line = "";
    while((line = br.readLine()) != null) {
      String[] tokens = line.split("\\s+");
      // The ARP table has the form:
      //   IP address        HW type    Flags     HW address           Mask   Device
      //   192.168.178.21    0x1        0x2       00:1a:2b:3c:4d:5e    *      tiwlan0
      if(tokens.length >= 4 && tokens[3].equalsIgnoreCase(mac)) {
        ip = tokens[0];
        break;
      }
    }
    br.close();
  }
  catch(Exception e) { Log.e(TAG, e.toString()); }
  return ip;
}

ただし、注意してください: PC との接続が既に確立されていない限り (また、その IP アドレスまたは名前が必要になります)、ARP テーブルは空になります。

逆に、MAC アドレスだけを知っている PC との接続を確立することをお勧めします。それから、それはそれほど単純ではありません。Runtime.getRuntime().exec("ping -b 192.168.178.255");ARP テーブルをいっぱいにするためだけに、ローカル ネットワーク ( ) 上の全員に ping を試みることもできます。

または、すべてのクライアントのリストとその IP アドレスをルーターから取得できますか?

于 2012-06-01T09:10:22.047 に答える