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

后端 未结 1 976
不思量自难忘°
不思量自难忘° 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).
    *
    * We assume that the file has this structure:
    *
    * 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 getConnectedDevices(String YourPhoneIPAddress) {
            ArrayList ret = new ArrayList();
    
            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)
提交回复
热议问题