精华内容
下载资源
问答
  • Java获取客户端mac地址

    万次阅读 2019-02-13 15:44:44
    问题: 项目中需要实现一个功能,在用户登录的... 解决方案: 通过请求IP获取mac地址,然后将账号与mac地址进行绑定。 代码实现如下: String getMacInfo(HttpServletRequest request) { //获取ip地址 String mac...

    问题:
    项目中需要实现一个功能,在用户登录的时候,要求系统账号和计算机绑定,只有绑定的账号才可以登录,并且每个账号只能绑定一台计算机。

    解决方案:
    通过请求IP获取mac地址,然后将账号与mac地址进行绑定。

    代码实现如下:

    String getMacInfo(HttpServletRequest request)
        {
            //获取ip地址
            String macInfo = null;
            try
            {
                String ip = request.getRemoteAddr();
                //linux下获取mac地址
                macAddr = CommonUtils.getMac(ip);
                //windows下获取mac地址
                if(StringUtils.isBlank(macAddr)){
                    macAddr = CommonUtils.getMacInWindows(ip).trim();
                }
            }
            catch (Exception e)
            {
                log.error("获取mac地址失败");
                return null;
            }
            return macInfo;
        }
    

    CommonUtils.java

    	// 从类unix机器上获取mac地址
    	 public static String getMac(String ip) throws IOException {
            String mac = SysCode.BDFH.EMPTY;
            if (ip != null) {
                try {
                    Process process = Runtime.getRuntime().exec("arp "+ip);
                    InputStreamReader ir = new InputStreamReader(process.getInputStream());
                    LineNumberReader input = new LineNumberReader(ir);
                    String line;
                    StringBuffer s = new StringBuffer();
                    while ((line = input.readLine()) != null) {
                        s.append(line);
                    }
                    mac = s.toString();
                    if (StringUtils.isNotBlank(mac)) {
                        mac = mac.substring(mac.indexOf(":") - 2, mac.lastIndexOf(":") + 3);
                    }
                    return mac;
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return mac;
        }
        
        // 从windows机器上获取mac地址
    	public static String getMacInWindows(final String ip) {
            String result = "";
            String[] cmd = {"cmd", "/c", "ping " + ip};
            String[] another = {"cmd", "/c", "ipconfig -all"};
            // 获取执行命令后的result
            String cmdResult = callCmd(cmd, another);
            // 从上一步的结果中获取mac地址
            result = filterMacAddress(ip, cmdResult, "-");
            return result;
     	}
     	
     	// 命令执行
     	public static String callCmd(String[] cmd, String[] another) {
            String result = "";
            String line = "";
            try {
                Runtime rt = Runtime.getRuntime();
                // 执行第一个命令
                Process proc = rt.exec(cmd);
                proc.waitFor();
                 // 执行第二个命令
                proc = rt.exec(another);
                InputStreamReader is = new InputStreamReader(proc.getInputStream());
                BufferedReader br = new BufferedReader(is);
                while ((line = br.readLine()) != null) {
                    result += line;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }
    	
    	// 获取mac地址
    	public static String filterMacAddress(final String ip, final String sourceString, final String macSeparator) {
            String result = "";
            String regExp = "((([0-9,A-F,a-f]{1,2}" + macSeparator + "){1,5})[0-9,A-F,a-f]{1,2})";
            Pattern pattern = Pattern.compile(regExp);
            Matcher matcher = pattern.matcher(sourceString);
            while (matcher.find()) {
                result = matcher.group(1);
                // 因计算机多网卡问题,截取紧靠IP后的第一个mac地址
                int num = sourceString.indexOf(ip) - sourceString.indexOf(": "+result + " ");
                if (num>0&&num<300) {
                    break;
                }
            }
            return result;
        }
    

    ------------本文结束感谢您的阅读------------
    展开全文
  • java获取客户端mac地址

    2015-12-02 11:51:09
    执行main方法获取mac地址,最权威的demo自己测试已经正常使用。网上基本都是假的获取不到,只有我这个才是最方便的
  • JAVA获取客户端MAC,web获取客户端MAC,Applet获取客户端MAC;JAVAweb开发;服务器端很难获取到客户端的MAC受路由器等....获取的到不正确或者被过滤掉;小弟,无奈写了一个客户端的Applet来获取客户端MAC然后再在传...
  • 使用JAVA获取客户端MAC地址 //Java获得CPU序列号和网卡Mac地址 /* 利用Runtime call操作系统的命令,具体的命令取决于不同的操作系统,注意不要调用Runtime.getRuntime().exec(String)接口,要用Runtime.getRuntime...
  • java通过ip获取客户端Mac地址的小例子,需要的朋友可以参考一下
  • Java 获取客户端mac地址

    万次阅读 2011-01-15 16:25:00
    import java.io.BufferedReader; import java.io.IOException; ...import java.io.InputStream;...import java.io.InputStreamReader;...import java.io.LineNumberReader;... * java获取客户端网卡的MAC地址 *

    展开全文
  • import java.io.BufferedReader;import java.io.InputStreamReader;.../*** 获取MAC地址* @author* 2011-12*/public class GetMacAddress {   public static String callCmd(String[] cmd
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
     
    /**
    * 获取MAC地址
    * @author
    * 2011-12
    */
    public class GetMacAddress {
       public static String callCmd(String[] cmd) {
         String result = "";
         String line = "";
         try {
           Process proc = Runtime.getRuntime().exec(cmd);
           InputStreamReader is = new InputStreamReader(proc.getInputStream());
           BufferedReader br = new BufferedReader (is);
           while ((line = br.readLine ()) != null) {
           result += line;
           }
         }
         catch(Exception e) {
           e.printStackTrace();
         }
         return result;
       }
        
       /**
       *
       * @param cmd 第一个命令
       * @param another 第二个命令
       * @return  第二个命令的执行结果
       */
       public static String callCmd(String[] cmd,String[] another) {
         String result = "";
         String line = "";
         try {
           Runtime rt = Runtime.getRuntime();
           Process proc = rt.exec(cmd);
           proc.waitFor(); //已经执行完第一个命令,准备执行第二个命令
           proc = rt.exec(another);
           InputStreamReader is = new InputStreamReader(proc.getInputStream());
           BufferedReader br = new BufferedReader (is);
           while ((line = br.readLine ()) != null) {
             result += line;
           }
         }
         catch(Exception e) {
           e.printStackTrace();
         }
         return result;
       }
        
        
        
       /**
       *
       * @param ip 目标ip,一般在局域网内
       * @param sourceString 命令处理的结果字符串
       * @param macSeparator mac分隔符号
       * @return mac地址,用上面的分隔符号表示
       */
       public static String filterMacAddress(final String ip, final String sourceString,final String macSeparator) {
         String result = "";
         String regExp = "((([0-9,A-F,a-f]{1,2}" + macSeparator + "){1,5})[0-9,A-F,a-f]{1,2})";
         Pattern pattern = Pattern.compile(regExp);
         Matcher matcher = pattern.matcher(sourceString);
         while(matcher.find()){
           result = matcher.group(1);
           if(sourceString.indexOf(ip) <= sourceString.lastIndexOf(matcher.group(1))) {
             break; //如果有多个IP,只匹配本IP对应的Mac.
           }
         }
       
         return result;
       }
        
        
        
       /**
       *
       * @param ip 目标ip
       * @return  Mac Address
       *
       */
       public static String getMacInWindows(final String ip){
         String result = "";
         String[] cmd = {
             "cmd",
             "/c",
             "ping " + ip
             };
         String[] another = {
             "cmd",
             "/c",
             "arp -a"
             };
       
         String cmdResult = callCmd(cmd,another);
         result = filterMacAddress(ip,cmdResult,"-");
       
         return result;
       }
     
       /**
       * @param ip 目标ip
       * @return  Mac Address
       *
       */
       public static String getMacInLinux(final String ip){
         String result = "";
         String[] cmd = {
             "/bin/sh",
             "-c",
             "ping " + ip + " -c 2 && arp -a"
             };
         String cmdResult = callCmd(cmd);
         result = filterMacAddress(ip,cmdResult,":");
       
         return result;
       }
        
       /**
       * 获取MAC地址
       * @return 返回MAC地址
       */
       public static String getMacAddress(String ip){
         String macAddress = "";
         macAddress = getMacInWindows(ip).trim();
         if(macAddress==null||"".equals(macAddress)){
           macAddress = getMacInLinux(ip).trim();
         }
         return macAddress;
       }
     
       //做个测试
       public static void main(String[] args) {     
         System.out.println(getMacAddress("220.181.111.148"));
       }
       
    }
    展开全文
  • java获取客户端MAC地址

    2009-12-09 13:14:24
    java"] import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UdpGetClientMacAddr { private String sRemot.....

    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;

    public class UdpGetClientMacAddr {
    private String sRemoteAddr;
    private int iRemotePort = 137;
    private byte[] buffer = new byte[1024];
    private DatagramSocket ds = null;

    public static void main(String[] args) {
    try {
    UdpGetClientMacAddr mac = new UdpGetClientMacAddr("10.0.150.207");
    String ma = mac.GetRemoteMacAddr();
    System.out.println(ma);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    public UdpGetClientMacAddr(String strAddr) throws Exception {
    sRemoteAddr = strAddr;
    ds = new DatagramSocket();
    }

    protected final DatagramPacket send(final byte[] bytes) throws IOException {
    DatagramPacket dp = new DatagramPacket(bytes, bytes.length, InetAddress
    .getByName(sRemoteAddr), iRemotePort);
    ds.send(dp);
    return dp;
    }

    protected final DatagramPacket receive() throws Exception {
    DatagramPacket dp = new DatagramPacket(buffer, buffer.length);
    ds.receive(dp);
    return dp;
    }

    protected byte[] GetQueryCmd() throws Exception {
    byte[] t_ns = new byte[50];
    t_ns[0] = 0x00;
    t_ns[1] = 0x00;
    t_ns[2] = 0x00;
    t_ns[3] = 0x10;
    t_ns[4] = 0x00;
    t_ns[5] = 0x01;
    t_ns[6] = 0x00;
    t_ns[7] = 0x00;
    t_ns[8] = 0x00;
    t_ns[9] = 0x00;
    t_ns[10] = 0x00;
    t_ns[11] = 0x00;
    t_ns[12] = 0x20;
    t_ns[13] = 0x43;
    t_ns[14] = 0x4B;

    for (int i = 15; i < 45; i++) {
    t_ns[i] = 0x41;
    }

    t_ns[45] = 0x00;
    t_ns[46] = 0x00;
    t_ns[47] = 0x21;
    t_ns[48] = 0x00;
    t_ns[49] = 0x01;
    return t_ns;
    }

    protected final String GetMacAddr(byte[] brevdata) throws Exception {

    int i = brevdata[56] * 18 + 56;
    String sAddr = "";
    StringBuffer sb = new StringBuffer(17);

    for (int j = 1; j < 7; j++) {
    sAddr = Integer.toHexString(0xFF & brevdata[i + j]);
    if (sAddr.length() < 2) {
    sb.append(0);
    }
    sb.append(sAddr.toUpperCase());
    if (j < 6)
    sb.append(':');
    }
    return sb.toString();
    }

    public final void close() {
    try {
    ds.close();
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    }

    public final String GetRemoteMacAddr() throws Exception {
    byte[] bqcmd = GetQueryCmd();
    send(bqcmd);
    DatagramPacket dp = receive();
    String smac = GetMacAddr(dp.getData());
    close();

    return smac;
    }
    }


    更多文章请访问 [url=http://www.osight.com]云游四方[/url]
    展开全文
  • 通过客户端的ip地址获取mac地址,本文文件本人测过,可用,请大家放心下载,绝不骗积分
  • 本篇文章主要介绍了JAVA如何获取客户端IP地址和MAC地址非常具有实用价值,这里整理了详细的代码,需要的朋友可以参考下
  • 通过执行CMD命令获得客户端MAC地址 nbtstat -a 172.16.30.4 import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; public class RemoteMacTest { public static ...
  • java 获取客户端ip mac地址

    热门讨论 2010-11-26 16:47:44
    获取客户端ip地址( 这个必须从客户端传到后台): jsp页面下,很简单,request....因为系统的VIew层是用JSF来实现的,因此页面上没法直接获得类似request,在bean里做了个强制转换java 获取客户端ip mac地址
  • Java获取客户端ip mac地址

    千次阅读 2013-11-16 10:06:04
    Java获取客户端ip mac地址
  • java获取客户端IP地址和MAC地址

    万次阅读 2014-06-12 15:45:18
    最近项目中要获得客户端mac地址。服务端是移植的centos系统,arm架构的盒子。客户端是手机和移动设备。(其它场景应该也是类似的) 首先要获得ip地址: 根据客户端的http请求,利用request.getRemoteAddr()获取...
  • 我是用Liunx来开发Java的,现在要开发一个获取客户端Mac的需求,我网上找了一些代码都是能得到本机的MAC地址,而不是客户端的MAC地址,哪位大哥,帮帮忙,看看改改程序,能不能变成客户端执行服务端就能获得客户端MAC地址,...
  • java获取客户端IP地址以及mac地址

    万次阅读 2014-02-02 08:31:14
    java获取客户端IP地址以及mac地址 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了...
  • java获取客户端ip及mac地址方法,适合web开发者
  • java"]//判断系统 public String checkSys(){ stmt = conn.createStatement(); String os =System.getProperty("os.name"); if(os.startsWith("win") || os.startsWith("Win&...
  • 在做B/S 结构的 web 系统时,常常要获取客户端的一些信息,如IP和MAC,以结合身份验证,进行登录。本资源,手把手教你如何 获取客户端 mac 地址,并验证,从而实现 指定用户指定电脑的 登录。。。
  • java获得客户端MAC地址 如何获得客户端MAC地址Java本身没有这个能力,不过利用操作系统的命令可以做到。同时我们可以通过这个例子来想想平时对我们有用的更多东西,很久以前就想弄弄这个了!现在有...
  • JAVA获取客户端MAC地址

    千次阅读 2014-12-24 09:29:31
    今天有个需求,就是后台的日志要记录下访问者的详细访问记录信息,包括环境信息,至于浏览器信息、IP啦这些的相信大家都可以从request中拿到,但是这个客户端MAC地址需要自己写个方法获取,我写了一个方法,现拿...
  • java 获取客户端ip mac地址 最近做一个安全系统,需要对用户的 ip 和 mac 地址进行验证,这里用到获取客户端ip和mac地址的两个方法,留存。 1.获取客户端ip地址( 这个必须从客户端传到后台): jsp页面下,很...
  • Java,运用了多线程内部执行,不影响其他登录验证操作。在Controller类获取客户端的IP地址的方法是:request....所以我们这里添加了条件验证,将客户端IP及Mac地址(同网段)与本地本地IP及Mac地址方法分开。
  • Java/JSP获得客户端网卡MAC地址的三种方法解析
  • 获取客户端MAC实例JSP 获取客户端MAC插件
  • JS获取客户端MAC地址

    2012-10-04 09:26:23
    JS获取客户端MAC地址 if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true) { ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,706
精华内容 19,482
关键字:

java客户端mac地址

java 订阅