3

如何使用Android手机获取PC的IP地址?(特别是如何获取具有特定 MAC 地址的系统的 IP 地址,与 Android 手机连接在同一网络上)?

       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 建立连接。那么事情就没有那么简单了。您可能会尝试 ping 本地网络上的每个人 ( Runtime.getRuntime().exec("ping -b 192.168.178.255");) 只是为了填充 ARP 表。

或者,也许,您可以从路由器获取所有客户端及其 IP 地址的列表?

于 2012-06-01T09:10:22.047 回答