Ping整个网络查找设备

时间:2017-02-20 19:08:55

标签: java android networking arduino

我正在尝试在5000端口上将本地网络从192.168.1.0 ping到192.168.1.255,并且Arduino板也通过5000端口连接到网络。我有电路板的Mac地址,并试图找到IP地址。这是我的代码

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

正如您所看到的,只有调制解调器在arp缓存中有Mac地址。怎么了?如何从Mac发现网络并查找IP地址?

1 个答案:

答案 0 :(得分:1)

我发现这种方法可以ping通网络并且它运行正常

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