安卓Java /system/bin/ping 始终返回退出码2,为什么?

3
我试图在Android上使用/system/bin/ping命令来ping我的网络设备。但无论我尝试ping的目标是www.google.com、192.168.2.1(路由器本地IP)或子网中其他任何可能的IP地址,它都返回退出码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。有什么想法吗?

我一直在用我的三星Galaxy S2进行测试...如果这有什么意义的话。 - undefined
2
为什么不打印错误流和输出流,然后检查是否提供了可读的错误信息? - undefined
一回到电脑前,我会试一下的。谢谢 :) - undefined
你还应该注意“-W 1000”。你是真的想要设置1000毫秒的超时吗?如果不是,请将其保持为“-W 1”。 - undefined
1个回答

1
我打印出错误流,它告诉我需要 INTERNET 权限才能使用 ping。我在清单文件中添加了 INTERNET 权限,问题解决了!
感谢 Codebender 的建议!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接