2012-05-11 107 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+)的新版本不保留这些信息了。表格是空白的。 –