2012-05-11 6 views
0

'arp'コマンドを開始する方法はありません。Android Runtime.exec( "arp")が動作しない

私の試み:

Runtime rt = Runtime.getRuntime(); 
proc = rt 
  1. .exec("arp") - >得IOException
  2. .exec("/proc/net/arp") - >だとしても(/proc/net/arpが存在することを、adbのシェル上で見つけた)IOException

シェルソリューションも試しました:

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

残念ながら、Androidの新しいバージョン(私は4.0+と思うが)もうこの情報を保管しないでくださいようです。テーブルは空白です。 –

関連する問題