我有一个打开热点的 android 选项卡。当其他启用 wifi 的设备连接到我的 android 设备时,它们的 IP 地址和其他详细信息将存储在 ARP 表中,我可以通过读取“/proc/net/arp”来访问这些详细信息,并将它们显示在列表中。但是,当一个设备从我的启用热点的 android 选项卡中断开连接时,与该设备相关的相应详细信息不会从 ARP 表中清除(当我阅读“/proc/net/arp”时,ARP 表仍然包含断开连接的详细信息设备)。我想清除断开连接的设备的详细信息。
这是代码(访问 ARP 表)
public ArrayList<ClientScanResultSO> getClientList(boolean onlyReachables,
int reachableTimeout) {
BufferedReader br = null;
ArrayList<ClientScanResultSO> result = null;
try {
result = new ArrayList<ClientScanResultSO>();
br = new BufferedReader(new FileReader("/proc/net/arp"));
String line;
while ((line = br.readLine()) != null) {
String[] splitted = line.split(" +");
if ((splitted != null) && (splitted.length >= 4)) {
// Basic sanity check
String mac = splitted[3];
if (mac.matches("..:..:..:..:..:..")) {
boolean isReachable = InetAddress
.getByName(splitted[0]).isReachable(
reachableTimeout);
String name = InetAddress.getByName(splitted[0]).getHostName();
if (!onlyReachables || isReachable) {
result.add(new ClientScanResultSO(splitted[0],
splitted[3], splitted[5], isReachable,name));
}
}
}
}
} catch (Exception e) {
Log.e(this.getClass().toString(), e.getMessage());
} finally {
try {
br.close();
} catch (IOException e) {
Log.e(this.getClass().toString(), e.getMessage());
}
}
return result;
}
希望我对我的问题很清楚。