zoukankan      html  css  js  c++  java
  • IpUtils工具类

    package cn.com.ssk.util.utils;
    
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.LineNumberReader;
    import java.net.InetAddress;
    import java.net.UnknownHostException;
    
    import javax.servlet.http.HttpServletRequest;
    
    public class IpUtils {
        private IpUtils() {
        }
    
        /** 
         * 获取当前网络ip 
         * @param request 
         * @return 
         */  
        public static String getIpAddr(HttpServletRequest request){  
            String 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();  
                    if(ipAddress.equals("127.0.0.1") || ipAddress.equals("0:0:0:0:0:0:0:1")){  
                        //根据网卡取本机配置的IP  
                        InetAddress inet=null;  
                        try {  
                            inet = InetAddress.getLocalHost();  
                        } catch (UnknownHostException e) {  
                            e.printStackTrace();  
                        }  
                        ipAddress= inet.getHostAddress();  
                    }  
                }  
                //对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割  
                if(ipAddress!=null && ipAddress.length()>15){ //"***.***.***.***".length() = 15  
                    if(ipAddress.indexOf(",")>0){  
                        ipAddress = ipAddress.substring(0,ipAddress.indexOf(","));  
                    }  
                }  
                return ipAddress;   
        }
        
        /**
         * 获得MAC地址
         * @param ip
         * @return
         */
        public static String getMACAddress(String ip){ 
            String str = ""; 
            String macAddress = ""; 
            try { 
                Process p = Runtime.getRuntime().exec("nbtstat -A " + ip); 
                InputStreamReader ir = new InputStreamReader(p.getInputStream()); 
                LineNumberReader input = new LineNumberReader(ir); 
                for (int i = 1; i < 100; i++) { 
                    str = input.readLine(); 
                    if (str != null) { 
                        if (str.indexOf("MAC Address") > 1) { 
                            macAddress = str.substring(str.indexOf("MAC Address") + 14, str.length()); 
                            break; 
                        } 
                    } 
                } 
            } catch (IOException e) { 
                e.printStackTrace(System.out); 
            } 
            return macAddress; 
        }
        
    }
  • 相关阅读:
    BZOJ1257:[CQOI2007]余数之和——题解+证明
    BZOJ3781:小B的询问——题解
    BZOJ2038:[2009国家集训队]小Z的袜子——题解
    BZOJ3052 & UOJ58:[WC2013]糖果公园——题解
    BZOJ1086:[SCOI2005]王室联邦——题解
    BZOJ1878:[SDOI2009]HH的项链——题解
    BZOJ2453:维护队列——题解
    美团新零售招聘-高级测试开发(20k-50k/月)
    Shopee招聘-测试开发leader(30k-60k/月)
    蚂蚁金服招聘-无线测试开发(20k-36k/月)
  • 原文地址:https://www.cnblogs.com/-scl/p/7842966.html
Copyright © 2011-2022 走看看