2012-05-11 156 views
0

有什麼方法可以啓動命令'arp'。Android Runtime.exec(「arp」)不起作用

我嘗試:

Runtime rt = Runtime.getRuntime(); 
proc = rt 
  1. .exec("arp") - >有一個IOException
  2. .exec("/proc/net/arp") - >有一個IOException以及(找到了在亞行外殼,一個/proc/net/arp存在)

還嘗試了一個外殼解決方案:

String sPrefix="/system/bin/sh -c 'proc/net/arp;"; 
String sPostfix="'"; 
Runtime rt = Runtime.getRuntime(); 

proc = rt.exec(sPrefix+sPostfix); // sh -c 'cd someplace; echo do something' 
InputStreamReader reader = new InputStreamReader(proc.getInputStream()); 
BufferedReader buffer = new BufferedReader(reader); 
String line = ""; 
while ((line = buffer.readLine()) != null) { 
    echo.append(line + "\n"); 
}   

但沒有得到任何回報。

有沒有人有一個想法: - /?

回答

2

/proc/net/arp不是一個命令,它是一個ARP表。這是一個文本文件,你可以閱讀:

StringBuffer echo = new StringBuffer(); 
    try { 
    BufferedReader br = new BufferedReader(new FileReader("/proc/net/arp")); 
    String line = ""; 
    while((line = br.readLine()) != null) echo.append(line + "\n"); 
    br.close(); 
    } 
    catch(Exception e) { Log.e(TAG, e.toString()); } 

表本身的格式爲:

IP address  HW type Flags  HW address   Mask Device 
192.168.178.21 0x1  0x2  00:1a:2b:3c:4d:5e *  tiwlan0 
192.168.178.34 0x1  0x2  1a:2b:3c:4d:5e:6f *  tiwlan1 
... 
+0

遺憾的是,似乎安卓(我認爲4.0+)的新版本不保留這些信息了。表格是空白的。 –