获取设备信息——获取客户端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地址[重复]