• 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; 
        }
        
    }
  • 相关阅读:
    第一次使用博客,有点小激动
    oracle中的分区表基本介绍
    【转】Apache Common HttpClient使用之七种武器
    利用Iterator删除List里相近或相同的对象
    [转]给开发维护大型项目的Java开发者的建议
    JavaScript中String对象的一些方法
    [转] ORA00913: 值过多
    [转]HTTP协议详解
    DOM解析xml
    C# 中的 == 和 .Equals()
  • 原文地址:https://www.cnblogs.com/-scl/p/7842966.html
Copyright © 2020-2023  润新知