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;
}
但要注意:除非你已經用你的電腦建立了聯繫(和您將需要它的IP地址或名稱),ARP表是空的。
我想你想反過來這樣做,建立與PC只知道它的MAC地址的連接。那就不那麼簡單了。您可以嘗試ping本地網絡上的每個人(Runtime.getRuntime().exec("ping -b 192.168.178.255");
)以填充ARP表。
或者,也許你可以從你的路由器獲得所有客戶端IP地址列表?
在PC上有一個叫做'arp'的命令。我想知道你能在Android上找到什麼。 –
這個答案可能會幫助你http://superuser.com/questions/29640/inverse-arp-lookup –
arping是要走的路。請注意,某些設備可能會阻止arp包。 – rsan