如何使用安卓手机获取系统的IP地址?

3
如何使用安卓手机获取电脑的IP地址?(特别是如何获取与安卓手机在同一网络上连接的具有特定MAC地址的系统的IP地址)?
       wired         wired    
modem--------router---------PC(mac:EE:00:B3:2F:56:12)
               |
               |
               |
             wireless
               |
               |
               |
               -------------android phone(A)  

1
PC 上有一个叫做 arp 的命令。我想知道在 Android 上能找到什么。 - xiaofeng.li
这个答案可能会对你有所帮助:http://superuser.com/questions/29640/inverse-arp-lookup - xiaofeng.li
arping 是个不错的选择。请注意,有些设备可能会阻止 arp 数据包。 - rsan
如果计算机有多个IP地址怎么办? - glglgl
1
你好glglg,假设我们的PC只有一个NIC,其MAC地址为AA:BB:CC:DD:EE:FF。如何获取它的IP地址? - vij
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;
}

请注意:除非你已经与你的电脑建立联系(你需要知道它的IP地址或名称),否则ARP表将是空的。
我猜你想用另一种方式,只知道MAC地址就建立连接。这并不简单。你可以尝试向本地网络上的每个人发送ping请求(Runtime.getRuntime().exec("ping -b 192.168.178.255");),以填充ARP表。
或者,也许你可以从路由器获取所有客户端及其IP地址列表?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接