Java根据IP地址/掩码位(CIDR)和起始IP-终止IP计算所有IP地址(IPV4和IPV6)

  • 计算IP列表
    • IPV4
    • IPV6
  • IP校验
    • IPV4
    • IPV6

计算IP列表

IPV4

1、需要的jar包

         <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.7</version></dependency>

2、代码示例

    /*** 获取IPV4 CIDR形式下所有的ipv4** @param cidr IPV4的CIDR格式 (192.168.1.0/24)*/private static R getIpsV4ByCidr(String cidr) {String ip = cidr.split("/")[0];int mask = Integer.parseInt(cidr.split("/")[1]);String ipFrom = Ipv4Util.getBeginIpStr(ip, mask);String ipTo = Ipv4Util.getEndIpStr(ip, mask);if (Ipv4Util.countByIpRange(ipFrom, ipTo) > 1024) {return R.warn("最多可以支持1024个IP");}return R.ok().addData(Ipv4Util.list(ip, mask, true));}/*** 获取IPV4 区间范围下所有的ipv4** @param ipFrom IPV4的起始ip* @param ipTo   IPV4的结束ip*/private static R getIpsV4ByRange(String ipFrom, String ipTo) {if (Ipv4Util.countByIpRange(ipFrom, ipTo) > 1024) {return R.warn("最多可以支持1024个IP");}return R.ok().addData(Ipv4Util.list(ipFrom, ipTo));}

IPV6

1、需要的jar包

     <dependency><groupId>com.googlecode.java-ipv6</groupId><artifactId>java-ipv6</artifactId><version>0.17</version></dependency>

2、代码示例

/*** 获取IPV6 CIDR形式下所有的ipv6** @param cidr IPV6的CIDR格式 (fe80::2001/64)*/private static R getIpsV6ByCidr(String cidr) {List<String> ipv6List = Lists.newArrayList();IPv6Network network = IPv6Network.fromString(cidr);if (network.size().compareTo(new BigInteger(String.valueOf(1024))) > 0) {return R.warn("最多可以支持1024个IP");}network.forEach(e -> ipv6List.add(e.toString()));return R.ok().addData(ipv6List);}/*** 获取IPV6 区间范围下所有的ipv6** @param ipFrom IPV6的起始ip* @param ipTo   IPV6的结束ip*/private static R getIpsV6ByRange(String ipFrom, String ipTo) {List<String> ipv6List = Lists.newArrayList();IPv6AddressRange ipv6Range = IPv6AddressRange.fromFirstAndLast(IPv6Address.fromString(ipFrom), IPv6Address.fromString(ipTo));if (ipv6Range.size().compareTo(new BigInteger(String.valueOf(1024))) > 0) {return R.warn("最多可以支持1024个IP");}ipv6Range.forEach(e -> ipv6List.add(e.toString()));return R.ok().addData(ipv6List);}

IP校验

IPV4

public static boolean fieldIPv4Valid(String matchParams) {String ipv4Format = "^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})$";boolean flag = matchParams.matches(ipv4Format);return flag;}

IPV6

public static boolean fieldIPv6Valid(String matchParams)  {String ipv6Format = "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$";boolean flag = matchParams.matches(ipv6Format);return flag;}

Java根据IP地址/掩码位(CIDR)和起始IP-终止IP计算网段(IPV4和IPV6)相关推荐

  1. 计算机网络习题(IP地址分类及CIDR划分方法)

    计算机网络习题(IP地址分类及CIDR划分方法) 题目描述: 已知地址块中的一个地址是140.120.84.24/20. (1)求这个地址块中的最小地址和最大地址 (2)地址掩码是什么? (3)地址块 ...

  2. 如何查询你电脑的IP地址?一文带你搞懂IP地址

    上一章介绍了数据链路层--以太网数据帧的报文格式(你知道以太网数据帧在网络中如何发送和接收的吗?一文带你搞懂它),本章介绍下网络层--IP地址. 大家都知道计算机都会有一个IP地址,只有配置了IP地址 ...

  3. IP地址和子网划分学习笔记之《IP地址详解》

    在学习IP地址和子网划分前,必须对进制计数有一定了解,尤其是二进制和十进制之间的相互转换,对于我们掌握IP地址和子网的划分非常有帮助,可参看如下目录详文. IP地址和子网划分学习笔记相关篇章: 1.I ...

  4. php验证ip地址的函数,php使用preg_match()函数验证ip地址的方法

    本文实例讲述了php使用preg_match()函数验证ip地址的方法.分享给大家供大家参考,具体如下: 代码一.正则实现preg_match("/^(?:25[0-5]|2[0-4]d|1 ...

  5. 找到特定ip地址 修改ip_您如何找到网站的IP地址?

    找到特定ip地址 修改ip Whether you are in it just for a bit of geeky fun, or are seriously wanting to know th ...

  6. 如何在庞大的ip地址库中快速定位到对应的ip地址所对应的归属地?

    通过ip地址查看 ip地址的归属地,这个功能实现起来并不复杂,它是通过维护一个很大的ip地址库来实现的,比如查找 202..133.3 该ip地址库,那便会在对应的ip地址库中找到 一个区间 如 [2 ...

  7. Android 手机上获取手机当前上网IP地址(手机网关给手机号分配的IP)

    Android 手机上获取手机当前上网IP地址 (手机网关给手机号分配的IP) 每个手机上网通过移动网关的时候,网关都会给该手机号分配一个IP地址(当然这个IP地址会在下线上线后会改变,网关都有记录的 ...

  8. xp系统服务器的ip地址怎么查,xp怎么配置ip地址|xp系统怎么样查看自己的ip地址...

    xp怎么配置ip地址 现在电脑要上网一般情况下都是自动获取IP地址的,如果想配置静态IP地址要怎么配置呢?对于新手来说不懂的怎么操作,其实很简单的,几步就可以配置好.如下图有解说. 1:首先进入到操作 ...

  9. 1、R5为ISP,只能进行ip地址配置:其所有接口配置为公有ip地切 2、R1与R5间使用PPP的PAP认证,R5为主认证方;R2与R5间使用PPP的chap认证 R5为主认证方;R3与R5间使用H

    实验报告 1.R5为ISP,只能进行ip地址配置:其所有接口配置为公有ip地切 2.R1与R5间使用PPP的PAP认证,R5为主认证方;R2与R5间使用PPP的chap认证 R5为主认证方;R3与R5 ...

最新文章

  1. [导入]WCF后传系列(6):消息如何传递之绑定Part 1
  2. java中bpmn流程图_Java学习之BPMN知识以及Activiti的流程部署
  3. Windows 系统中常见的 Shell 命令总结(不时补充)
  4. CodeFirst Update-Database 出现对象'DF__**__**__**' 依赖于 列'**'。
  5. 正态分布的前世今生:正态魅影
  6. APP架子迁移指南(一)
  7. 10个微型计算机应用的例子,微型计算机原理与接技术版简答题.doc
  8. 杰出的橙色网站设计案例
  9. 无线通讯射频测试软件,ISIS射频工具(专业射频测试软件)V2.03 正式版
  10. 乐优商城(12)--授权中心
  11. HBase常用Shell命令详解
  12. 最速下降法matlab全局最小值_matlab实现最速下降法和dfp求函数最小值
  13. 怎样学习数据结构? 伯克利神课CS61B 总结感悟,学习指南和避坑建议
  14. html表格打印自动换行,html 表格自动换行问题
  15. 【Unity】在Scene窗口中发射射线
  16. 最全的程序化交易模型设计思路在这里
  17. 音乐播放器mplayer的简单使用
  18. CPM-Nets: Cross Partial Multi-View Networks
  19. 免费获取对方ip地址PHP源码
  20. 王道考研操作系统复习笔记

热门文章

  1. 2020-03-19
  2. iOS 实战开发课程笔记
  3. 详解win10开机启动慢是什么原因怎么解决
  4. html5选题背景,选题背景、目的及研究意义_中式餐饮空间设计选题背景
  5. Android中BottomSheetDialog使用方法(底部弹出的Dialog)
  6. 计算机图标右击管理打不开,电脑图标打不开怎么办6
  7. mysql innodb 缓冲池_mysql8 参考手册--配置多个InnoDB缓冲池实例
  8. IntelliJ IDEA中怎么查看方法说明
  9. 58私信怎么引流?58同城如何引流到微信?怎么用58同城做引流
  10. Linux防火墙关闭方法