Java获得登录的IP和MAC地址

原创 2016年05月31日 16:29:44
     /**
     * 通过HttpServletRequest返回IP地址
     * @param request HttpServletRequest
     * @return ip String
     * @throws Exception
     */
    public String getIpAddr(HttpServletRequest request) throws Exception {
        String ip = request.getHeader("x-forwarded-for");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_CLIENT_IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_X_FORWARDED_FOR");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }
<pre name="code" class="java">     /**
     * 通过IP地址获取MAC地址
     * @param ip String,127.0.0.1格式
     * @return mac String
     * @throws Exception
     */
    public String getMACAddress(String ip) throws Exception {
        String line = "";
        String macAddress = "";
        final String MAC_ADDRESS_PREFIX = "MAC Address = ";
        final String LOOPBACK_ADDRESS = "127.0.0.1";
        //如果为127.0.0.1,则获取本地MAC地址。
        if (LOOPBACK_ADDRESS.equals(ip)) {
            InetAddress inetAddress = InetAddress.getLocalHost();
            //貌似此方法需要JDK1.6。
            byte[] mac = NetworkInterface.getByInetAddress(inetAddress).getHardwareAddress();
            //下面代码是把mac地址拼装成String
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < mac.length; i++) {
                if (i != 0) {
                    sb.append("-");
                }
                //mac[i] & 0xFF 是为了把byte转化为正整数
                String s = Integer.toHexString(mac[i] & 0xFF);
                sb.append(s.length() == 1 ? 0 + s : s);
            }
            //把字符串所有小写字母改为大写成为正规的mac地址并返回
            macAddress = sb.toString().trim().toUpperCase();
            return macAddress;
        }
        //获取非本地IP的MAC地址
        try {
            Process p = Runtime.getRuntime().exec("nbtstat -A " + ip);
            InputStreamReader isr = new InputStreamReader(p.getInputStream());
            BufferedReader br = new BufferedReader(isr);
            while ((line = br.readLine()) != null) {
                if (line != null) {
                    int index = line.indexOf(MAC_ADDRESS_PREFIX);
                    if (index != -1) {
                        macAddress = line.substring(index + MAC_ADDRESS_PREFIX.length()).trim().toUpperCase();
                    }
                }
            }
            br.close();
        } catch (IOException e) {
            e.printStackTrace(System.out);
        }
        return macAddress;
    }




版权声明:本文为博主原创文章,未经博主允许不得转载。

Java 类中获取远程客户端的IP地址和Mac地址

上代码: 首先,通过HttpServletRequest类获取到request: HttpServletRequest request = ServletActionContext.get...
  • langjian2012
  • langjian2012
  • 2014年02月24日 17:12
  • 3477

java获取本机ip和mac地址

工作中用到的  总结下,与大家分享 package com.taile.msc.util; import java.net.InetAddress; import java.net.Networ...
  • qw222pzx
  • qw222pzx
  • 2016年01月20日 14:57
  • 718

JAVA程序 通过IP地址 获取MAC地址

我们都知道通过在电脑上敲 cmd 后,输入ipconfig -all 来获取IP地址或者MAC地址,java程序可以在window和linux下获取MAC地址等信息!看下面代码 import jav...
  • chwshuang
  • chwshuang
  • 2015年07月19日 21:52
  • 4209

Java获取访问服务端的客户端IP和MAC地址

Java获取访问服务端的客户端IP和MAC地址
  • q179886903
  • q179886903
  • 2017年03月17日 12:41
  • 617

计算机的MAC地址(物理地址)和IP地址的区别和联系?

转自:https://zhidao.baidu.com/question/646121430661351325.html Mac地址就是在媒体接入层上使用的地址,通俗点说就是网卡的物理地址,现在...
  • suyu_yuan
  • suyu_yuan
  • 2016年12月27日 16:11
  • 1974

C#编程之 如何获取本地和远程主机的IP及MAC地址

利用dns类和WMI规范获取IP及MAC地址 在C#编程中,要获取主机名和主机IP地址,是比较容易的.它提供的Dns类,可以轻松的取得主机名和IP地址.  示例: string strHostName...
  • friday5pm
  • friday5pm
  • 2007年04月06日 10:06
  • 1884

获取路由器的Mac地址和当前的iP地址

package com.example.atest; import android.content.Context; import android.net.ConnectivityManage...
  • hechenghai
  • hechenghai
  • 2015年04月27日 22:38
  • 5878

java通过ip获取网卡MAC地址

java通过ip获取网卡MAC地址
  • jacke121
  • jacke121
  • 2017年04月16日 20:20
  • 1030

Java获取客户端ip mac地址

Java获取客户端ip mac地址
  • baohuan_love
  • baohuan_love
  • 2013年11月16日 10:06
  • 4120

c#中如何获取本机MAC地址、IP地址、硬盘ID、CPU序列号等系统信息

我们在利用C#开发桌面程序(Winform)程序的时候,经常需要获取一些跟系统相关的信息,例如用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存等。 首先需要引入命名空间: u...
  • yongyong521
  • yongyong521
  • 2015年07月17日 11:16
  • 7194
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java获得登录的IP和MAC地址
举报原因:
原因补充:

(最多只允许输入30个字)