public String getIpAddr() {
    String ipAddress = null;
    ipAddress = request.getRemoteAddr();
    ipAddress = request.getHeader("x-forwarded-for");
    if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
    ipAddress = request.getHeader("Proxy-Client-IP");
    }
    if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
        ipAddress = request.getHeader("WL-Proxy-Client-IP");
    }
    if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
        ipAddress = request.getRemoteAddr();
    }    //对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
    if(ipAddress!=null && ipAddress.length()>15){ //"***.***.***.***".length() = 15
        if(ipAddress.indexOf(",")>0){
            ipAddress = ipAddress.substring(0,ipAddress.indexOf(","));
        }
    }
    return ipAddress; 
  }

解决方案 »

  1.   

    给你个地址:http://hi.baidu.com/yuxinglian/blog/item/2a657acedb92f130b600c8bf.html看看能不能帮你。
      

  2.   

    我记得有个帖子说过 代理的真实ip取法 你在csdn上搜搜js 取不太现实 被屏蔽的可能性很大
      

  3.   

    我以前用的是java获取客户端IP记录日志,但是没有记录Mac地址,所以我这里就只贴出获取客户端IP的方法。代码如下: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.getRemoteAddr();
    }
    希望对你有帮助……
      

  4.   

    http://training.tsinghua.edu.cn/html/jishuyuandi/2009/0302/48.html
      

  5.   

    request,没代理的话,你也取不到mac的5F的例子有很大的局限性。总之,客户端不主动发送的话,通过http(或者ftp等常见应用协议)你无法获取相关信息话说lz不是10年18k嘛
      

  6.   

    lz其实不需要在这里问的,上baidu、google我看已经够了。