2015-12-17 4 views
2

Я пытаюсь использовать команду/system/bin/ping на Android, чтобы пинговать устройства в моей сети. По какой-то причине он возвращает код выхода 2 для каждого пинга, который я пытаюсь выполнить. Я пробовал: www.google.com, 192.168.2.1 (router local ip), и в настоящее время все возможные ip для устройств в подсети ... но он всегда возвращает 2. Вот мой код.Android java/system/bin/ping всегда возвращает exitCode 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.

Любые идеи ?

+0

Я тестировал это с помощью Samsung Galaxy S2 ... если это что-то значит. –

+2

Почему вы не печатаете поток ошибок и поток вывода и не проверяете, дает ли это сообщение для ошибки ... – Codebender

+0

Я попробую, когда вернусь к своему компьютеру. Спасибо :) –

ответ

1

Я распечатал поток ошибок, и он сказал мне, что мне нужны разрешения INTERNET для использования ping. Я добавил разрешения INTERNET к моему манифесту и вуаля!

Спасибо Codebender за предложение!