Android 开启个人热点时 获取连接人数以及连接上的设备信息

    xiaoxiao2021-04-05  45

    最近在开发过程当中,遇到一个需求 ,开启个人热点后需要知道有多少人连上了这个热点 以及这些设备的信息

    经过一段时间的摸索和反复的查阅资料,有了下面的代码和解决办法:

    首先 连接热点的所有信息都保存在proc/net/arp下面 用re文件管理器可以查看一下

    会发现 里面有连接的设备的 ip mac地址 等等  

    好了 那么问题就简单了

    直接贴代码:

    BufferedReader br = null; ArrayList<ClientScanResult> result = null; try { result = new ArrayList<>(); br = new BufferedReader(new FileReader("/proc/net/arp"));//读取这个文件 String ss=br.toString(); String line; while ((line = br.readLine()) != null) { String[] splitted = line.split(" +");//将文件里面的字段分割开来 if (splitted.length >= 4) { // Basic sanity check String mac = splitted[3];// 文件中分别是IP address HW type Flags HW address mask Device  //然后我们拿取HW address 也就是手机的mac地址进行匹配 如果有 就证明是手机 if (mac.matches("..:..:..:..:..:..")) { boolean isReachable = InetAddress.getByName(splitted[0]).isReachable(reachableTimeout); if (!onlyReachables || isReachable) { result.add(new ClientScanResult(splitted[0], splitted[3], splitted[5], isReachable));//最后如果能匹配 那就证明是连接了热点的手机 加到这个集合里 里面有所有需要的信息 } } } } } catch (Exception e) { CandyLog.e(e.getMessage()); } finally { try { if (br != null) { br.close(); } } catch (IOException e) { CandyLog.e(e.getMessage()); } }

    public class ClientScanResult { private String IpAddr; private String HWAddr; private String Device; private boolean isReachable; public ClientScanResult(String ipAddr, String hWAddr, String device, boolean isReachable) { super(); this.IpAddr = ipAddr; this.HWAddr = hWAddr; this.Device = device; this.isReachable = isReachable; } public String getIpAddr() { return IpAddr; } public void setIpAddr(String ipAddr) { IpAddr = ipAddr; } public String getHWAddr() { return HWAddr; } public void setHWAddr(String hWAddr) { HWAddr = hWAddr; } public String getDevice() { return Device; } public void setDevice(String device) { Device = device; } public boolean isReachable() { return isReachable; } public void setReachable(boolean isReachable) { this.isReachable = isReachable; } }

    好了 想要知道连接人数  只要得到集合的size就可以了  又解决一个问题  

    关键点在于 热点信息储存在proc/net/arp 里面  有兴趣的可以了解下proc目录 里面有很多很多信息

    转载请注明原文地址: https://ju.6miu.com/read-666282.html

    最新回复(0)