Android java /system/bin/ping 总是 returns exitCode 2,为什么?
Android java /system/bin/ping always returns exitCode 2, why?
我正在尝试在 Android 上使用 /system/bin/ping 命令来 ping 我网络上的设备。出于某种原因,它 returns 我尝试的每个 ping 都退出代码 2。
我有 tried:www.google.com、192.168.2.1(路由器本地 ip),目前子网上设备的每个可能的 ip...但它总是 returns 2. 这是我的代码。
onCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
String subnet = "192.168.2";
for (int i = 0; i <= 255; i++) {
String node = subnet + "." + i;
System.out.println(pingHost(node));
}
} catch (InterruptedException | IOException e) {
e.printStackTrace();
}
}
pingHost()
public static int pingHost(String host) throws IOException, InterruptedException {
String cmd = "/system/bin/ping -c 1 -W 1000 " + host;
Process proc = Runtime.getRuntime().exec(cmd);
proc.waitFor();
return proc.exitValue();
}
我试过超时和不超时...仍然打印的唯一退出代码是 2。
有什么想法吗?
我打印出错误流,它告诉我需要 INTERNET 权限才能使用 ping。我将 INTERNET 权限添加到我的清单中,瞧!
感谢 Codebender 的建议!
我正在尝试在 Android 上使用 /system/bin/ping 命令来 ping 我网络上的设备。出于某种原因,它 returns 我尝试的每个 ping 都退出代码 2。 我有 tried:www.google.com、192.168.2.1(路由器本地 ip),目前子网上设备的每个可能的 ip...但它总是 returns 2. 这是我的代码。
onCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
String subnet = "192.168.2";
for (int i = 0; i <= 255; i++) {
String node = subnet + "." + i;
System.out.println(pingHost(node));
}
} catch (InterruptedException | IOException e) {
e.printStackTrace();
}
}
pingHost()
public static int pingHost(String host) throws IOException, InterruptedException {
String cmd = "/system/bin/ping -c 1 -W 1000 " + host;
Process proc = Runtime.getRuntime().exec(cmd);
proc.waitFor();
return proc.exitValue();
}
我试过超时和不超时...仍然打印的唯一退出代码是 2。
有什么想法吗?
我打印出错误流,它告诉我需要 INTERNET 权限才能使用 ping。我将 INTERNET 权限添加到我的清单中,瞧!
感谢 Codebender 的建议!