java擷取用戶端IP和伺服器IP

來源:互聯網
上載者:User

標籤:tip   res   soc   http   htm   break   request對象   log   while   

一、Java擷取伺服器IP(轉自:https://www.cnblogs.com/george93/p/6306579.html)

//方法一,也是最簡單的一種。    String SERVER_IP = InetAddress.getLocalHost().getHostAdress().toString();//方法二:/**     * 擷取伺服器IP地址     * @return     */    @SuppressWarnings("unchecked")    public static String  getServerIp(){        String SERVER_IP = null;        try {            Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces();            InetAddress ip = null;            while (netInterfaces.hasMoreElements()) {                NetworkInterface ni = (NetworkInterface) netInterfaces.nextElement();                ip = (InetAddress) ni.getInetAddresses().nextElement();                SERVER_IP = ip.getHostAddress();                if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress()                        && ip.getHostAddress().indexOf(":") == -1) {                    SERVER_IP = ip.getHostAddress();                    break;                } else {                    ip = null;                }            }        } catch (SocketException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }            return SERVER_IP;    }}

 

二、Java擷取用戶端IP(轉自:http://www.cnblogs.com/ITtangtang/p/3927768.html)

  其核心思想是通過HTTP的Servlet來擷取;

 

//第一種/**      * 從Request對象中獲得用戶端IP,處理了HTTPProxy 伺服器和Nginx的反向 Proxy截取了ip      * @param request      * @return ip      */    public static String getLocalIp(HttpServletRequest request) {        String remoteAddr = request.getRemoteAddr();        String forwarded = request.getHeader("X-Forwarded-For");        String realIp = request.getHeader("X-Real-IP");        String ip = null;        if (realIp == null) {            if (forwarded == null) {                ip = remoteAddr;            } else {                ip = remoteAddr + "/" + forwarded.split(",")[0];            }        } else {            if (realIp.equals(forwarded)) {                ip = realIp;            } else {                if(forwarded != null){                    forwarded = forwarded.split(",")[0];                }                ip = realIp + "/" + forwarded;            }        }        return ip;    }//第二種public static String getIp(HttpServletRequest request) {        String remoteAddr = request.getRemoteAddr();        String forwarded = request.getHeader("X-Forwarded-For");        String realIp = request.getHeader("X-Real-IP");        String ip = null;        if (realIp == null) {            if (forwarded == null) {                ip = remoteAddr;            } else {                ip = remoteAddr + "/" + forwarded;            }        } else {            if (realIp.equals(forwarded)) {                ip = realIp;            } else {                ip = realIp + "/" + forwarded.replaceAll(", " + realIp, "");            }        }        return ip;    }//第三種,也是最清晰合理的一種public static String getIp2(HttpServletRequest request) {           String ip = request.getHeader("X-Forwarded-For");           if(StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)){               //多次反向 Proxy後會有多個ip值,第一個ip才是真實ip               int index = ip.indexOf(",");               if(index != -1){                   return ip.substring(0,index);               }else{                   return ip;               }           }           ip = request.getHeader("X-Real-IP");           if(StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)){               return ip;           }           return request.getRemoteAddr();       }

 

 

 

 

  

 

 

java擷取用戶端IP和伺服器IP

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.