Amir Panahandeh
Amir Panahandeh

Reputation: 9029

Pinging whole network to find devices

I'm trying to ping local network from 192.168.1.0 to 192.168.1.255 on 5000 port and an Arduino board is also connected to the network with 5000 port. I have Mac address of board and trying to find IP address. this is my code

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;
}

and this is the result

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

as you can see only modem has Mac address in arp cache. what is wrong? how can I discover network and find IP address from Mac?

Upvotes: 1

Views: 118

Answers (1)

Amir Panahandeh
Amir Panahandeh

Reputation: 9029

I found this method to ping the network and it's working perfect

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

Upvotes: 1

Related Questions