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;
    }

   

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值