我使用以下代码读取连接的设备 IP 地址如何获取通过电话连接的设备数量, 但我得到错误列表,即列表显示连接到热点且当前断开连接的早期设备。有没有其他方法可以获取更新列表。或如何刷新 /proc/net/arp 文件以获取最新列表
还阅读了这与 linux 上的 arp 相关的内容,但没有找到出路。
我使用以下代码读取连接的设备 IP 地址如何获取通过电话连接的设备数量, 但我得到错误列表,即列表显示连接到热点且当前断开连接的早期设备。有没有其他方法可以获取更新列表。或如何刷新 /proc/net/arp 文件以获取最新列表
还阅读了这与 linux 上的 arp 相关的内容,但没有找到出路。
这对我有用,它将显示没有连接的设备及其mac地址
public int getClientList() {
int macCount = 0;
BufferedReader br = null;
String flushCmd = "sh ip -s -s neigh flush all";
Runtime runtime = Runtime.getRuntime();
try {
runtime.exec(flushCmd, null, new File("/proc/net"));
} catch (IOException e) {
e.printStackTrace();
}
try {
br = new BufferedReader(new FileReader("/proc/net/arp"));
String line;
while ((line = br.readLine()) != null) {
String[] splitted = line.split(" +");
if (splitted != null) {
// Basic sanity check
String mac = splitted[3];
System.out.println("Mac : Outside If " + mac);
if (mac.matches("..:..:..:..:..:..")) {
macCount++;
/* ClientList.add("Client(" + macCount + ")");
IpAddr.add(splitted[0]);
HWAddr.add(splitted[3]);
Device.add(splitted[5]);*/
System.out.println("Mac : " + mac + " IP Address : " + splitted[0]);
System.out.println("Mac_Count " + macCount + " MAC_ADDRESS " + mac);
Toast.makeText(
getApplicationContext(),
"Mac_Count " + macCount + " MAC_ADDRESS "
+ mac, Toast.LENGTH_SHORT).show();
}
/* for (int i = 0; i < splitted.length; i++)
System.out.println("Addressssssss "+ splitted[i]);*/
}
}
} catch (Exception e) {
}
return macCount;
}
试试这个