Java 获取服务器IP和本地Ip

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

以下为我总结的代码:

//取得服务器Ip

public static String getSerIp(){ String clientIp =“”; // 根据网卡取本机配置的IP Enumeration allNetInterfaces; //定义网络接口枚举类 try { allNetInterfaces = NetworkInterface.getNetworkInterfaces(); //获得网络接口 InetAddress ip = null; //声明一个InetAddress类型ip地址 while (allNetInterfaces.hasMoreElements()) //遍历所有的网络接口 { NetworkInterface netInterface = allNetInterfaces.nextElement(); Enumeration 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;
}
经验分享 程序员 微信小程序 职场和发展