我是小韩,这一次和大家分享一下如何获取客户端的mac地址,在开发中,我们会遇到想进行主机安全的认证,简单一点的就是通过mac地址来认证,不是这台电脑的用户不允许登录,可以通过添加自己允许的mac进行认证。

步骤就是先获取到登录电脑的ip,然后通过ip来计算出电脑的mac地址,还是比较简单的,话不多说,上图

1、先获取到登录电脑的ip地址。

这些都是死格式,不用去修改什么,直接粘贴到类里面,进行使用就可以了,上代码

public String extractClientIp(HttpServletRequest request) {String ip = null;//X-Forwarded-For:Squid 服务代理String ipAddresses = request.getHeader("X-Forwarded-For");if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {//Proxy-Client-IP:apache 服务代理ipAddresses = request.getHeader("Proxy-Client-IP");}if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {//WL-Proxy-Client-IP:weblogic 服务代理ipAddresses = request.getHeader("WL-Proxy-Client-IP");}if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {//HTTP_CLIENT_IP:有些代理服务器ipAddresses = request.getHeader("HTTP_CLIENT_IP");}if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {//X-Real-IP:nginx服务代理ipAddresses = request.getHeader("X-Real-IP");}//有些网络通过多层代理,那么获取到的ip就会有多个,一般都是通过逗号(,)分割开来,并且第一个ip为客户端的真实IPif (ipAddresses != null && ipAddresses.length() != 0) {ip = ipAddresses.split(",")[0];}//还是不能获取到,最后再通过request.getRemoteAddr();获取if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {ip = request.getRemoteAddr();}return ip;
}

2、接下来就是通过获取到的ip地址再获取到mac地址,也是比较简单的,直接使用就可以了

这个基本上也是死格式,直接使用就可以了,话不多说,上代码

public String getMacAddrByIp(String ip) {String macAddr = null;try {Process process = Runtime.getRuntime().exec("nbtstat -a " + ip);BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));Pattern pattern = Pattern.compile("([A-F0-9]{2}-){5}[A-F0-9]{2}");Matcher matcher;for (String strLine = br.readLine(); strLine != null;strLine = br.readLine()) {matcher = pattern.matcher(strLine);if (matcher.find()) {macAddr = matcher.group();break;}}} catch (IOException e) {e.printStackTrace();}System.out.println(macAddr);return macAddr;
}

这基本上就是Java如何获取客户端的mac地址了,获取出来后,那还不是你想怎么处理就怎么处理么!!

但是在这里面有一个小bug,就是这个程序在哪台电脑上部署,部署程序这台电脑是登录不上去了,即使你把这个电脑的mac地址允许通过也不行,这是因为你在用本机访问你自己的程序时,使用的是127.0.0.1这个地址,这里出现了通过127.0.0.1这个地址是取不到mac地址的,所以大家使用的时候一定要注意哦!最简单的,在一个局域网内,用两个电脑就可以了,接下来我会查阅资料去填补这个问题的

如果大家有看不懂的,不明白的,请私信或者评论,小韩看到会第一时间回复大家,谢谢,谢谢

我是小韩,再见!!!

Java获取客户端的mac地址相关推荐

  1. java 获取用户的MAC地址多种方法实例详解

    java 获取用户的MAC地址多种方法实例详解 这篇文章主要介绍了JAVA实现获取用户的MAC地址的多种方法实例,需要的朋友可以参考下 java实现获取用户的MAC地址方法: 方法一:将本机地址与局域 ...

  2. 获取客户端网卡MAC地址和IP地址的几种方法(一)

    获取客户端网卡MAC地址和IP地址的几种方法(一) 作者:代码乱了 在做B/S结构的系统时,我们常常需要获取客户端的一些信息,如IP和MAC,以结合身份验证.在ASP.NET中,要获取服务器端的MAC ...

  3. java获取客户端的IP地址工具类

    java获取客户端的IP地址工具类 import java.net.InetAddress; import java.net.UnknownHostException;import javax.ser ...

  4. JAVA获取机器的MAC地址

    JAVA获取机器的MAC地址 需求:获取机器的mac地址 问题:一些国产操作系统获取不到MAC地址,以下搜集了一些获取mac地址的方法 1.获取MAC地址 ps:该方法在银河麒麟中可用 public ...

  5. java 获取 ip mac_Java获取客户端ip mac地址

    欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入 最近做一个安全系统,需要对用户的 ip 和 mac 地址进行验证,这里用到获取客户端ip和mac地址的两个方法,留存. 1. ...

  6. java 获取客户端真实 ip 地址和 mac 地址

    现在都流行显示 ip 归属地,那么我先来获取客户端的真实 ip 地址以及 mac 地址,上代码 import javax.servlet.http.HttpServletRequest; import ...

  7. java获取网卡的mac地址

    为了项目的安全,有时候需要得到电脑的唯一码,比如:网卡的mac地址.和大家分享一下,下面是项目中用到的工具类: import java.io.BufferedReader; import java.i ...

  8. java获取客户端请求IP地址 获取公网ip

    这几天搞了用java获取ip地址,由于测试方法不对,一直没有成功,昨天终于想通了并不是方法不对,而是我的测试方法不对,下面这个方法,完全可以得到客户端的公网ip地址 但是在测试的时候注意:我用的是we ...

  9. java 获取本机mac地址并转为字符串

    2019独角兽企业重金招聘Python工程师标准>>> public  String getMacAddress() throws Exception{         InetAd ...

最新文章

  1. 一文介绍机器学习中的三种特征选择方法
  2. VC实现HTTP协议的GET和POST方法
  3. 对话系统(二)-普通神经网络
  4. java url headers,Java CloseableHttpResponse.getHeaders方法代码示例
  5. 哈达玛变换的应用SATD、SAD等匹配算法
  6. ITA结合测试(总结之六:ITA上的时间,与本地时间)
  7. 2014蓝桥杯:地宫取宝(DFS详解)
  8. 网易新闻iOS版开发使用的第三方框架和组件列表
  9. latex 目录层次设置
  10. java流 视频_java如何对视频文件处理?包括拉流推流视频截取等?
  11. 腾讯C++程序员面试题
  12. 怎么从抖音上直接跳转到微信呢?
  13. 学计算机进中央电视台,央视评中科院博士论文致谢走红 从山坳穷学生到计算机博士...
  14. [转帖]ABAQUS学习和开发浅谈 [原创]
  15. 第五章 长度及线位移测量
  16. 教你分析快递揽收后,第二条物流是否超过12小时
  17. 如何用计算机打出字,两个字中间的点怎么打出来?
  18. MySQL面试常问大全
  19. android项目实现查询功能,Android实现归属地查询功能(示例代码)
  20. 苹果批Meta高额抽成行为:暴露了其虚伪面孔

热门文章

  1. 联想拯救者R720 加内存条组成双通道图解教程(遇到了意外:开不了机、发出滴答滴答的声音)
  2. dojo入门介绍(一)
  3. [免费专栏] Android安全之绕过直连、HOST校验、系统证书校验、代理检测、双向认证抓HTTPS数据
  4. 前端后台以及游戏中使用Google Protocol Buffer详解
  5. 最靠谱的投资渠道之一:70%亏损的股票市场
  6. Feature Squeezing
  7. 2022年医药行业数据库系统V4.0 pharnexcloud(库群介绍)
  8. 人工智能多媒体课件-中南大学-蔡自兴 主编
  9. CK+人脸表情数据库地址
  10. Redis分布式锁背后的原理