private String getIP(String mac) {
String ip = null;
try {
BufferedReader br = new BufferedReader(new FileReader("/proc/net/arp"));
String line = "";
while((line = br.readLine()) != null) {
String[] tokens = line.split("\\s+");
// The ARP table has the form:
// IP address HW type Flags HW address Mask Device
// 192.168.178.21 0x1 0x2 00:1a:2b:3c:4d:5e * tiwlan0
if(tokens.length >= 4 && tokens[3].equalsIgnoreCase(mac)) {
ip = tokens[0];
break;
}
}
br.close();
}
catch(Exception e) { Log.e(TAG, e.toString()); }
return ip;
}
ただし、注意してください: PC との接続が既に確立されていない限り (また、その IP アドレスまたは名前が必要になります)、ARP テーブルは空になります。
逆に、MAC アドレスだけを知っている PC との接続を確立することをお勧めします。それから、それはそれほど単純ではありません。Runtime.getRuntime().exec("ping -b 192.168.178.255");
ARP テーブルをいっぱいにするためだけに、ローカル ネットワーク ( ) 上の全員に ping を試みることもできます。
または、すべてのクライアントのリストとその IP アドレスをルーターから取得できますか?