0

有什么方法可以启动命令'arp'。

我的尝试:

Runtime rt = Runtime.getRuntime();
proc = rt
  1. .exec("arp")-> 得到一个IOException
  2. .exec("/proc/net/arp")-> 也得到了一个IOException(通过 adb shell 发现 a/proc/net/arp存在)

还尝试了一个shell解决方案:

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");
}           

但没有返回值。

有没有人有想法:-/?

4

1 回答 1

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
...
于 2012-06-01T09:18:00.267 回答