首页 > 编程语言 >java中获取内网IP

java中获取内网IP

时间:2023-03-07 23:35:38浏览次数:32  
标签:java ipAddress getHeader request unknown equalsIgnoreCase IP 内网

package com.dashan.utils.iputils;

import org.apache.commons.lang.StringUtils;
import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 * @author ADMIN
 */
public class IPNWUtil {

    public static String findNWIp(HttpServletRequest request) {
        String ipAddress = null;
        ipAddress = request.getHeader("x-forwarded-for");
        if (StringUtils.isEmpty(ipAddress) || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("Proxy-Client-IP");
        }
        if (StringUtils.isEmpty(ipAddress) || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("WL-Proxy-Client-IP");
        }
        if (StringUtils.isEmpty(ipAddress) || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("HTTP_CLIENT_IP");
        }
        if (StringUtils.isEmpty(ipAddress) || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("HTTP_X_FORWARDED_FOR");
        }
        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getRemoteAddr();
            if (ipAddress.equals("127.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;
    }
    
}

 

标签:java,ipAddress,getHeader,request,unknown,equalsIgnoreCase,IP,内网
From: https://www.cnblogs.com/xbinbin/p/17190180.html

相关文章

  • Java方法
    Java方法1.何谓方法Java方法是语句的集合,他们在一起执行一个功能方式是解决一类问题的步骤的有序组合方法包含与类或对象中方法在程序中被创建,在其他地方被引用设......
  • 接受参数和数据回传及JavaWeb可能遇到的乱码问题
    一.处理提交的数据我们通过编写一个控制类来测试:@Controller@RequestMapping("/user")publicclasscontrollerTest5{@GetMapping("/t1")publicStringte......
  • java.lang.IllegalStateException: Could not find method myClick(View) in a parent
    Android开发报错:java.lang.IllegalStateException:CouldnotfindmethodmyClick(View)inaparentorancestorContextforandroid:onClickattributedefinedonv......
  • ChIP-seq 分析:基因集富集(11)
    动动发财的小手,点个赞吧!1.基因集检测转录因子或表观遗传标记可能作用于按共同生物学特征(共享生物学功能、RNAseq实验中的共同调控等)分组的特定基因组。ChIPseq分析中......
  • Java语言概述
    吾心安处即吾乡。吾乡何处不可眠1.Java概述是SUN(StanfordUniversityNetwork,斯坦福大学网络公司)1995年推出的一门高级编程语言。是一种面向Internet的编程......
  • 商品清单----Java
    packageshangchengkucunqingdananli;/**商城库存清单案例*变量的形式对商品的数据保存*品牌,尺寸大小,价格,配置,库存数量*三个商品苹果,thinkpad,华硕**......
  • java的流程控制-顺序结构
    顺序结构java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行顺序结构是最简单的算法结构语句与语句之间,框与框之间是按从上到下的顺序进行的,它是......
  • Java 赋值预算和比较运算
    赋值运算基本语法符号:=      当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。      支持连续赋值。扩展赋......
  • JAVA项目中的常用的异常处理情况总结
    一,JDK中与异常相关的类分析:Java中的异常分类:Throwable类有两个直接子类:Exception:出现的问题是可以被捕获的;Error:系统错误,通常由JVM处理。可捕获的异常又可以分为两......
  • java自动计算(王建民必考)
    //importjava.util.random.*;importjava.util.Random;importjava.util.Scanner;publicclassmain{ ScannerS=newScanner(System.in); staticRandomrandom=ne......