获取设备信息——获取客户端ip地址和mac地址

Posted NeilZhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取设备信息——获取客户端ip地址和mac地址相关的知识,希望对你有一定的参考价值。

1、获取本地IP(有可能是 内网IP,192.168.xxx.xxx)

 /**
     * 获取本地IP
     * 
     * @return
     */
    public static String getLocalIpAddress() {
        try {
            Enumeration<networkinterface> en = NetworkInterface
                    .getNetworkInterfaces();
            while (en.hasMoreElements()) {
                NetworkInterface ni = en.nextElement();
                Enumeration<inetaddress> enIp = ni.getInetAddresses();
                while (enIp.hasMoreElements()) {
                    InetAddress inet = enIp.nextElement();
                    if (!inet.isLoopbackAddress()
                            && (inet instanceof Inet4Address)) {
                        return inet.getHostAddress().toString();
                    }
                }
            }
        } catch (SocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
 
        return "0";
    }</inetaddress></networkinterface>

2.获取网络ip,比上述方法更加精确,但是要异步执行。

/**
     * 获取外网的IP(要访问Url,要放到后台线程里处理)
     * 
     * @Title: GetNetIp
     * @Description:
     * @param @return
     * @return String
     * @throws
     */
    public static String GetNetIp() {
        URL infoUrl = null;
        InputStream inStream = null;
        String ipLine = "";
        HttpURLConnection httpConnection = null;
        try {
            infoUrl = new URL("https://ip168.com/");
            URLConnection connection = infoUrl.openConnection();
            httpConnection = (HttpURLConnection) connection;
            int responseCode = httpConnection.getResponseCode();
            if (responseCode == HttpURLConnection.HTTP_OK) {
                inStream = httpConnection.getInputStream();
                BufferedReader reader = new BufferedReader(
                        new InputStreamReader(inStream, "utf-8"));
                StringBuilder strber = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null)
                    strber.append(line + "\n");
 
                Pattern pattern = Pattern
                        .compile("((?:(?:25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){3}(?:25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d))))");
                Matcher matcher = pattern.matcher(strber.toString());
                if (matcher.find()) {
                    ipLine = matcher.group();
                }
            }
 
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                inStream.close();
                httpConnection.disconnect();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return ipLine;
    }

3.获取mac地址

public static String getLocalMacAddress() {//没有缓存的地址,则查询
        String mac_s = "";
        try {
            byte[] mac;
            NetworkInterface ne = NetworkInterface.getByInetAddress(InetAddress.getByName(getLocalIpAddress()));
            mac = ne.getHardwareAddress();
            mac_s = byte2hex(mac);
        } catch (Exception e) {
        }
        mac_s;
        return mac_s;
    }

 

以上是关于获取设备信息——获取客户端ip地址和mac地址的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中获取已连接客户端的 MAC 和 IP 地址?

android获取Mac地址和IP地址

linux下怎样获取网络设备的mac地址,ip地址等

从Android应用程序获取设备的MAC地址和IP地址[重复]

获取设备的mac地址和IP地址(android6.0以上专用)

获取客户端的ip地址与mac地址总结