【问题标题】:Android java /system/bin/ping always returns exitCode 2, why?Android java /system/bin/ping 总是返回 exitCode 2,为什么?
【发布时间】:2015-12-17 07:29:22
【问题描述】:

我正在尝试使用 Android 上的 /system/bin/ping 命令来 ping 我网络上的设备。出于某种原因,它会为我尝试的每个 ping 返回退出代码 2。 我已经尝试过: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 进行测试...如果这意味着什么。
  • 你为什么不打印错误流和输出流并检查它是否给出错误的可读消息......
  • 我会在我回到我的电脑后尝试一下。谢谢:)
  • 您还应该注意“-W 1000”。你真的是说 1000 超时?如果没有留下它“-W 1”

标签: java android networking ping exit-code


【解决方案1】:

我打印出错误流,它告诉我需要 INTERNET 权限才能使用 ping。我在清单中添加了 INTERNET 权限,瞧!

感谢 Codebender 的建议!

【讨论】:

    猜你喜欢
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    相关资源
    最近更新 更多