Java判断IP地址为内网IP还是公网IP的方法

 更新时间:2015年01月13日 09:09:16   投稿:shichen2014  
这篇文章主要介绍了Java判断IP地址为内网IP还是公网IP的方法,针对tcp/ip协议中保留的三个私有地址进行判断分析,是比较实用的技巧,需要的朋友可以参考下

本文实例讲述了Java判断IP地址为内网IP还是公网IP的方法。分享给大家供大家参考。具体分析如下:

tcp/ip协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下:

10.0.0.0/8:10.0.0.0~10.255.255.255
172.16.0.0/12:172.16.0.0~172.31.255.255
192.168.0.0/16:192.168.0.0~192.168.255.255

那么,直接上代码吧:

复制代码 代码如下:
public static boolean internalIp(String ip) {
    byte[] addr = IPAddressUtil.textToNumericFormatV4(ip);
    return internalIp(addr);
}

public static boolean internalIp(byte[] addr) {
    final byte b0 = addr[0];
    final byte b1 = addr[1];
    //10.x.x.x/8
    final byte SECTION_1 = 0x0A;
    //172.16.x.x/12
    final byte SECTION_2 = (byte) 0xAC;
    final byte SECTION_3 = (byte) 0x10;
    final byte SECTION_4 = (byte) 0x1F;
    //192.168.x.x/16
    final byte SECTION_5 = (byte) 0xC0;
    final byte SECTION_6 = (byte) 0xA8;
    switch (b0) {
        case SECTION_1:
            return true;
        case SECTION_2:
            if (b1 >= SECTION_3 && b1 <= SECTION_4) {
                return true;
            }
        case SECTION_5:
            switch (b1) {
                case SECTION_6:
                    return true;
            }
        default:
            return false;
    }
}

希望本文所述对大家的Java程序设计有所帮助。

相关文章

  • ThreadPoolExecutor中的submit()方法详细讲解

    ThreadPoolExecutor中的submit()方法详细讲解

    在使用线程池的时候,发现除了execute()方法可以执行任务外,还发现有一个方法submit()可以执行任务,本文就详细的介绍一下ThreadPoolExecutor中的submit()方法,具有一定的参考价值,感兴趣的可以了解一下
    2022-04-04
  • 解决@Value注解不能注入static修饰的属性问题

    解决@Value注解不能注入static修饰的属性问题

    这篇文章主要介绍了解决@Value注解不能注入static修饰的属性问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Java实现直接插入排序与折半插入排序的示例详解

    Java实现直接插入排序与折半插入排序的示例详解

    这篇文章主要为大家详细介绍了插入排序中两个常见的排序:直接插入排序与折半插入排序。本文用Java语言实现了这两个排序算法,感兴趣的可以学习一下
    2022-06-06
  • Spring boot 整合KAFKA消息队列的示例

    Spring boot 整合KAFKA消息队列的示例

    这篇文章主要介绍了Spring boot 整合 KAFKA 消息队列的示例,帮助大家更好的理解和使用spring boot框架,感兴趣的朋友可以了解下
    2020-10-10
  • Java编程Commons lang组件简介

    Java编程Commons lang组件简介

    这篇文章主要介绍了Java编程Commons lang组件的相关内容,十分具有参考意义,需要的朋友可以了解下。
    2017-09-09
  • 三种Java求最大值的方法

    三种Java求最大值的方法

    本篇文章给大家总结了在JAVA中求最大值的三种常用方法,以及代码做了分享,需要的朋友参考下。
    2018-02-02
  • Druid基本配置及内置监控使用_动力节点Java学院整理

    Druid基本配置及内置监控使用_动力节点Java学院整理

    这篇文章主要介绍了Druid基本配置及内置监控使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • java使用链表来模拟栈的入栈出栈操作实例代码

    java使用链表来模拟栈的入栈出栈操作实例代码

    这篇文章主要介绍了java 使用链表来模拟栈的入栈出栈操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 详解JVM的分代模型

    详解JVM的分代模型

    这篇文章主要介绍了JVM的分代模型的相关资料,帮助大家更好的理解和学习Java虚拟机相关知识,感兴趣的朋友可以了解下
    2020-10-10
  • java中创建、写入文件的5种方式

    java中创建、写入文件的5种方式

    这篇文章主要介绍了java中创建、写入文件的5种方式,帮助大家更好的理解学习Java io的相关知识,感兴趣的朋友可以了解下
    2020-08-08

最新评论