Java 获取服务器IP和本地Ip

    在项目中经常会遇到需要获取服务器的IP和本地IP,而我们大部分的服务器都配置在linux上,因此我们的代码必须要实现能够获取linux下服务器及本地ip

    以下为我总结的代码:

   //取得服务器Ip

   public static String getSerIp(){
        String clientIp ="";
        // 根据网卡取本机配置的IP 
        Enumeration<NetworkInterface> allNetInterfaces;  //定义网络接口枚举类 
        try { 
            allNetInterfaces = NetworkInterface.getNetworkInterfaces();  //获得网络接口 
            InetAddress ip = null; //声明一个InetAddress类型ip地址 
            while (allNetInterfaces.hasMoreElements()) //遍历所有的网络接口 
            { 
                NetworkInterface netInterface = allNetInterfaces.nextElement(); 
                Enumeration<InetAddress> addresses = netInterface.getInetAddresses(); //同样再定义网络地址枚举类 
                while (addresses.hasMoreElements()) 
                { 
                    ip = addresses.nextElement(); 
                    if (ip != null && (ip instanceof Inet4Address)) //InetAddress类包括Inet4Address和Inet6Address 
                    { 
                      if(!ip.getHostAddress().equals("127.0.0.1")){
                          clientIp= ip.getHostAddress(); 
                      }
                    }  
                } 
            }
        } catch (SocketException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        }
        return clientIp; 
    }

   //获取客户端IP

   public static String getClientIp() {
        HttpServletRequest request = getHttpServletRequest();
       
        String accessIP = request.getHeader("X-Forwarded-For");
        if (accessIP == null || accessIP.length() == 0 || "unknown".equalsIgnoreCase(accessIP)) {
            accessIP = request.getHeader("Proxy-Client-IP");
        }
        if (accessIP == null || accessIP.length() == 0 || "unknown".equalsIgnoreCase(accessIP)) {
            accessIP = request.getHeader("WL-Proxy-Client-IP");
        }
        if (accessIP == null || accessIP.length() == 0 || "unknown".equalsIgnoreCase(accessIP)) {
            accessIP = request.getRemoteAddr();
        }
        if (accessIP == null || accessIP.length() == 0 || "127.0.0.1".equalsIgnoreCase(accessIP)) {
            try {
                accessIP = InetAddress.getLocalHost().getHostAddress();
            } catch (Exception e) {
                accessIP = "";
            }
           
        }
        return accessIP;
    }

   

猜你喜欢

转载自lafecat.iteye.com/blog/2229184
今日推荐