我正在尝试在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地址?
答案 0 :(得分:1)
我发现这种方法可以ping通网络并且它运行正常
if (InetAddress.getByName(host).isReachable(timeout)) {
System.out.println(host + " is reachable");
}