2017-02-20 69 views
1

我想在本地網絡從192.168.1.0192.168.1.255 5000端口和一個Arduino板也連接到5000端口的網絡。我有Mac的Mac地址並嘗試查找IP地址。這是我的代碼Pinging整個網絡找到設備

static void pingLocal() { 
    for (int i = 0; i <= 255; i++) { 
     ping("192.168.1." + i + ":5000"); 
    } 
} 

private static void ping(String url) { 
    try { 
     Process mIpAddrProcess = Runtime.getRuntime().exec("/system/bin/ping -c 1 " + url); 
     int mExitValue = mIpAddrProcess.waitFor(); 
     System.out.println(" mExitValue " + mExitValue); 
     if (mExitValue == 0) { 
      Log.d("log", "true"); 
     } else { 
      Log.d("log", "false"); 
     } 
    } catch (IOException | InterruptedException e) { 
     e.printStackTrace(); 
    } 
} 

static String getIPFromArpCache(String mac) { 
    if (mac == null) 
     return null; 
    BufferedReader br = null; 
    try { 
     br = new BufferedReader(new FileReader("/proc/net/arp")); 
     String line; 
     while ((line = br.readLine()) != null) { 
      Log.d("line", line); 
      String[] splitted = line.split(" +"); 
      if (splitted.length >= 4 && mac.equals(splitted[3])) { 
       String ip = splitted[0]; 
       if (ip.split(".").length == 4) { 
        return ip; 
       } else { 
        return null; 
       } 
      } 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      assert br != null; 
      br.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    return null; 
} 

,這是結果

02-20 19:57:07.465 12103-12103/ir.shafadoc.handset D/line: IP address  HW type  Flags  HW address   Mask  Device 
02-20 19:57:07.466 12103-12103/ir.shafadoc.handset D/line: 192.168.1.33  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.466 12103-12103/ir.shafadoc.handset D/line: 192.168.1.26  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.467 12103-12103/ir.shafadoc.handset D/line: 192.168.1.19  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.467 12103-12103/ir.shafadoc.handset D/line: 192.168.1.12  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.467 12103-12103/ir.shafadoc.handset D/line: 192.168.1.31  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.468 12103-12103/ir.shafadoc.handset D/line: 192.168.1.24  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.468 12103-12103/ir.shafadoc.handset D/line: 192.168.1.17  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.469 12103-12103/ir.shafadoc.handset D/line: 192.168.1.10  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.470 12103-12103/ir.shafadoc.handset D/line: 192.168.1.29  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.470 12103-12103/ir.shafadoc.handset D/line: 192.168.1.22  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.470 12103-12103/ir.shafadoc.handset D/line: 192.168.1.15  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.471 12103-12103/ir.shafadoc.handset D/line: 192.168.1.8  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.471 12103-12103/ir.shafadoc.handset D/line: 192.168.1.1  0x1   0x2   c0:a0:bb:9a:e4:ad  *  wlan0 
02-20 19:57:07.472 12103-12103/ir.shafadoc.handset D/line: 192.168.1.27  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.472 12103-12103/ir.shafadoc.handset D/line: 192.168.1.20  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.472 12103-12103/ir.shafadoc.handset D/line: 192.168.1.13  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.473 12103-12103/ir.shafadoc.handset D/line: 192.168.1.32  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.473 12103-12103/ir.shafadoc.handset D/line: 192.168.1.25  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.473 12103-12103/ir.shafadoc.handset D/line: 192.168.1.18  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.474 12103-12103/ir.shafadoc.handset D/line: 192.168.1.11  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.474 12103-12103/ir.shafadoc.handset D/line: 192.168.1.30  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.475 12103-12103/ir.shafadoc.handset D/line: 192.168.1.23  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.475 12103-12103/ir.shafadoc.handset D/line: 192.168.1.16  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.475 12103-12103/ir.shafadoc.handset D/line: 192.168.1.9  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.476 12103-12103/ir.shafadoc.handset D/line: 192.168.1.28  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.476 12103-12103/ir.shafadoc.handset D/line: 192.168.1.21  0x1   0x0   00:00:00:00:00:00  *  wlan0 
02-20 19:57:07.477 12103-12103/ir.shafadoc.handset D/line: 192.168.1.14  0x1   0x0   00:00:00:00:00:00  *  wlan0 

,你只能看到調制解調器具有MAC地址arp緩存。哪裏不對?我如何發現網絡並從Mac上查找IP地址?

+0

目前尚不清楚你的要求。你在期待什麼? – zed

+0

我的主板Mac地址應該出現在arp cache @zed –

+0

這是哪個IP地址?它是否出現在這個日誌中? – zed

回答

1

我發現這個方法來ping網絡和它的工作完美

if (InetAddress.getByName(host).isReachable(timeout)) { 
     System.out.println(host + " is reachable"); 
}