JAVA获取一台机器的MAC地址

前置条件:首先要能够ping通要获取MAC地址的电脑A(如果不能ping通可能原因是防火墙没关)

 

获取MAC地址原理:

1、首先获取A的IP地址,

2、然后ping这个IP,ping通之后,

3、然后再调用”arp -a IP地址”命令,获取到A的MAC地址(此时获取到的MAC地址是字母都是小写的)

4、将小写字母转为大写

 

代码:

 

 /**
     * 1、首先获取A的IP地址
     * @param request
     * @return ip
     * @throws Exception
     */
    public String getIp(HttpServletRequest request) throws Exception{
        String ip = request.getHeader("X-Forwarded-For");
        if(ip!=null){
            if(!ip.isEmpty()&&!"unKnown".equalsIgnoreCase(ip)){
                int index = ip.indexOf(",");
                if (index != -1){
                    return ip.substring(0,index);
                }else{
                    return ip;
                }
            }
        }
        ip = request.getHeader("X-Real-IP");
        if(ip!=null){
            if (!ip.isEmpty()&&!"unKnown".equalsIgnoreCase(ip)){
                return ip;
            }
        }
        return  request.getRemoteAddr();
    }


    /**
     * 通过访问的Ip地址得到mac地址
     * @param ip
     * @return mac
     */
    public String getMacByIp(String ip){
     String result = "";
       try {
           result = command("ping "+ip+" -n 2");  //2、然后ping这个IP
           if(result.contains("TTL")){
                result = command("arp -a "+ip);   //3、然后再调用arp -a命令
            }
       } catch (Exception e) {
           e.printStackTrace();
       }
       
        String regExp = "([0-9A-Fa-f]{2})([-:][0-9A-Fa-f]{2}){5}"; //正则表达式检测MAC地址是否合法
        Pattern pattern = Pattern.compile(regExp);
        Matcher matcher = pattern.matcher(result);
        StringBuilder mac = new StringBuilder();
        while (matcher.find()) {
            String temp = matcher.group();
            mac.append(temp);
        }
        return mac.toString().toUpperCase();    //4、将小写字母转为大写
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值