2016-11-28 3 views
0

Ich entwickle eine Android-App, wo ich Ping-Befehl mit Interface-Namen verwenden muss .Ping-Befehl ohne Schnittstelle funktioniert gut, aber wenn ich den Schnittstellennamen Ping nicht funktioniert.Ping mit Schnittstellenname funktioniert in Linux-Terminal ohne Root-Berechtigung.Wie führe ich den Ping-Befehl in Android mit dem Namen der Schnittstelle aus (Beispiel: wlan0)?

ich unter Befehl versuchen

pingCommand = "ping -I wlan0 192.168.230.2"; //Does not work 
proc = runtime.exec(pingCommand); 

pingCommand = "ping 192.168.230.2"; //This does work 
proc = runtime.exec(pingCommand); 

Bitte einige Lösungen für dieses Problem teilen.

Antwort

0

Können Sie die Fehlermeldung schreiben, die Sie erhalten, ist nach dem Beispielcode, der auf Ubuntu funktioniert:

import java.io.BufferedReader; 
import java.io.InputStreamReader; 

public class RuntimeDemo { 
    public static void main(String args[]) { 
     String s; 
     Process p; 
     try { 
      p = Runtime.getRuntime().exec("ping -I wlan0 192.168.1.119"); 
      BufferedReader br = new BufferedReader(
       new InputStreamReader(p.getInputStream())); 
      while ((s = br.readLine()) != null) 
       System.out.println("line: " + s); 
      p.waitFor(); 
      System.out.println ("exit: " + p.exitValue()); 
      p.destroy(); 
     } catch (Exception e) {} 
    } 
} 
+0

FYI: Ich führe diesen Ping-Befehl in Android über Programm. Eigentlich gibt es keinen Fehler, es ist wie wenn Sie falsches Argument/einige Argumente geben, die nur im Super-User-Modus ausgeführt werden können. Wie Ihr Programm läuft (Ping -I wlan0 192.168.1.119) in Ubuntu direkt, so dass es funktioniert. –

+0

Um einen Fehler zu bekommen, habe ich getErrorStream() anstelle von getInputStream() verwendet. FEHLER: ping: SO_BINDTODEVICE: Operation nicht erlaubt Bedeutet dies, dass root-Berechtigung erforderlich ist, um die Schnittstelle für Ping in Android zu verwenden? Aber in Linux-Root-Berechtigung ist nicht erforderlich, um das gleiche durchzuführen. –

0

ich einige Experiment in Bezug auf Ping tat Schnittstelle in Android verwenden, und ich habe unten Schlussfolgerungen.

1) Die ROOT-Berechtigung ist erforderlich, um Ping mit einer bestimmten Schnittstelle auszuführen (Beispiel: wlan0). Aber ein spezifiziertes Telefon "HUAWEI NXT-AL 10 (Android 6.0)", wo ich Schnittstelle (wlan0) für Ping ohne ROOT-Erlaubnis verwenden kann.

2) Für andere Telefone (versucht mit Moto G, Micoromax android eins) wenn root aktiviert ist dann ist Ping mit Schnittstelle sonst nicht erlaubt.

Verwandte Themen