zoukankan      html  css  js  c++  java
  • IP address of device using phone as access point

    http://stackoverflow.com/questions/8324215/ip-address-of-device-using-phone-as-access-point

    The following code will give you the ip adrress & other details of the wifi enabled devices connected to the the android hotspot device

    Main.java

    import java.util.ArrayList;
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;
    import com.whitebyte.hotspotclients.R;
    import com.whitebyte.wifihotspotutils.ClientScanResult;
    import com.whitebyte.wifihotspotutils.WifiApManager;
    
    public class Main extends Activity {
          TextView textView1;
          WifiApManager wifiApManager;
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        textView1 = (TextView) findViewById(R.id.textView1);
        wifiApManager = new WifiApManager(this);
    
        scan();
    }
    
    private void scan() {
        ArrayList<ClientScanResult> clients = wifiApManager.getClientList(false);
    
        textView1.append("Clients: \n");
        for (ClientScanResult clientScanResult : clients) {
            textView1.append("####################\n");
            textView1.append("IpAddr: " + clientScanResult.getIpAddr() + "\n");
            textView1.append("Device: " + clientScanResult.getDevice() + "\n");
            textView1.append("HWAddr: " + clientScanResult.getHWAddr() + "\n");
            textView1.append("isReachable: " + clientScanResult.isReachable() + "\n");
        }
    }

    ClientScanResult.java

    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();
        IpAddr = ipAddr;
        HWAddr = hWAddr;
        Device = device;
        this.setReachable(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 void setReachable(boolean isReachable) {
        this.isReachable = isReachable;
    }
    
    public boolean isReachable() {
        return isReachable;
    }

    WIFI_AP_STATE.java

    public enum WIFI_AP_STATE 
         {
            WIFI_AP_STATE_DISABLING, WIFI_AP_STATE_DISABLED, WIFI_AP_STATE_ENABLING, WIFI_AP_STATE_ENABLED, WIFI_AP_STATE_FAILED
         }

    WifiApManager.java

    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.lang.reflect.Method;
    import java.net.InetAddress;
    import java.util.ArrayList;
    import android.content.Context;
    import android.net.wifi.WifiConfiguration;
    import android.net.wifi.WifiManager;
    import android.util.Log;
    
    public class WifiApManager {
    private final WifiManager mWifiManager;
    
    public WifiApManager(Context context) {
        mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    }
    
    
    
    /**
     * Gets a list of the clients connected to the Hotspot, reachable timeout is 300
     * @param onlyReachables {@code false} if the list should contain unreachable (probably disconnected) clients, {@code true} otherwise
     * @return ArrayList of {@link ClientScanResult}
     */
    public ArrayList<ClientScanResult> getClientList(boolean onlyReachables) {
        return getClientList(onlyReachables, 300);
    }
    
    /**
     * Gets a list of the clients connected to the Hotspot 
     * @param onlyReachables {@code false} if the list should contain unreachable (probably disconnected) clients, {@code true} otherwise
     * @param reachableTimeout Reachable Timout in miliseconds
     * @return ArrayList of {@link ClientScanResult}
     */
    public ArrayList<ClientScanResult> getClientList(boolean onlyReachables, int reachableTimeout) {
        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(" +");
    
                if ((splitted != null) && (splitted.length >= 4)) {
                    // Basic sanity check
                    String mac = splitted[3];
    
                    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) {
            Log.e(this.getClass().toString(), e.getMessage());
        } finally {
            try {
                br.close();
            } catch (IOException e) {
                Log.e(this.getClass().toString(), e.getMessage());
            }
        }
    
        return result;
    }
    }

  • 相关阅读:
    iptables详解
    Linux文件结构及基本文件夹
    linux的一些常用命令
    Sql Server REPLACE函数的使用
    MSSQL复制表操作
    MSSQL2005数据库显示单一用户模式,无法进行任何操作
    linux下查看所有用户及所有用户组
    SpringMVC基础-10-拦截器
    SpringMVC基础-09-文件上传(单文件、多文件上传)
    SpringMVC基础-08-数据转换 & 数据格式化 & 数据校验
  • 原文地址:https://www.cnblogs.com/shangdawei/p/2974703.html
Copyright © 2011-2022 走看看