编程语言
首页 > 编程语言> > java-如何使用Android手机获取系统的IP地址?

java-如何使用Android手机获取系统的IP地址?

作者:互联网

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

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

解决方法:

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地址的列表?

标签:networking,network-programming,android-intent,java,android
来源: https://codeday.me/bug/20191201/2079516.html