How can I get the number of devices connected through the phones access-point?

后端 未结 1 958
不思量自难忘°
不思量自难忘° 2021-01-14 07:23

As you all know, Android devices come with the the functionality to turn the phone into a access-point/hotspot.

Is it programatically possible to get the number of d

相关标签:
1条回答
  • 2021-01-14 07:51

    you can count connected devices on access point and it's get hardware mac address on below link on android: http://www.flattermann.net/2011/02/android-howto-find-the-hardware-mac-address-of-a-remote-host/

    code from above link:

    /**
     * Try to extract a hardware MAC address from a given IP address using the
     * ARP cache (/proc/net/arp).<br>
     * <br>
     * We assume that the file has this structure:<br>
     * <br>
     * IP address       HW type     Flags       HW address            Mask     Device
     * 192.168.18.11    0x1         0x2         00:04:20:06:55:1a     *        eth0
     * 192.168.18.36    0x1         0x2         00:22:43:ab:2a:5b     *        eth0
     *
     * @param ip
     * @return the MAC from the ARP cache
     */
    public static String getMacFromArpCache(String ip) {
        if (ip == null)
            return null;
        BufferedReader br = null;
        try {
            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 && ip.equals(splitted[0])) {
                    // Basic sanity check
                    String mac = splitted[3];
                    if (mac.matches("..:..:..:..:..:..")) {
                        return mac;
                    } else {
                        return null;
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
    

    or if u have problem on code try below code:

     public ArrayList<InetAddress> getConnectedDevices(String YourPhoneIPAddress) {
            ArrayList<InetAddress> ret = new ArrayList<InetAddress>();
    
            LoopCurrentIP = 0;
    
            String IPAddress = "";
            String[] myIPArray = YourPhoneIPAddress.split("\\.");
            InetAddress currentPingAddr;
    
    
            for (int i = 0; i <= 255; i++) {
                try {
    
                    // build the next IP address
                    currentPingAddr = InetAddress.getByName(myIPArray[0] + "." +
                            myIPArray[1] + "." +
                            myIPArray[2] + "." +
                            Integer.toString(LoopCurrentIP));
                    ad = currentPingAddr.toString();   /////////////////
                    Log.d("MyApp",ad);                 //////////////
    
                    // 50ms Timeout for the "ping"
                    if (currentPingAddr.isReachable(50)) {
    
                        ret.add(currentPingAddr);
                        ad = currentPingAddr.toString();        /////////////////
                        Log.d("MyApp",ad);                     //////////////
                    }
                } catch (UnknownHostException ex) {
                } catch (IOException ex) {
                }
    
                LoopCurrentIP++;
            }
            return ret;
        }
    
    0 讨论(0)
提交回复
热议问题