码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2017-09-13 21:24:57      阅读:365      评论:0      收藏:0      [点我收藏+]

标签:amp   except   instr   script   for   readline   客户端   null   本地   

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地址

标签:amp   except   instr   script   for   readline   客户端   null   本地   

原文地址:http://www.cnblogs.com/NeilZhang/p/7517492.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!