我想定义到我的接入点的连接。我想在用户连接时收到通知。我知道我可以查询 arp table(/proc/net/arp) ,从中我可以找到连接的用户。这是示例代码:
public static ArrayList<ClientScanResult> getClientList() {
BufferedReader br = null;
ArrayList<ClientScanResult> result = null;
try {
result = new ArrayList<ClientScanResult>();
br = new BufferedReader(new FileReader("/proc/net/arp"));
String line;
while ((line = br.readLine()) != null) {
String[] splitted = line.split(" +");
Log.d("Debug:line=", line);
if ((splitted != null) && (splitted.length >= 4)) {
// Basic sanity check
String mac = splitted[3];
if (mac.matches("..:..:..:..:..:..")) {
result.add(new ClientScanResult(splitted[0], splitted[3], splitted[5]));
}
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
问题:除了每 n 秒查看一次 arp-table 之外,还有什么更好的方法吗?
UPD:如果你连接到一个接入点,然后断开连接,那么记录仍然会在 arp-table 中。也就是说,直到我无法获得所有连接用户的列表