Java根据IP地址/掩码位(CIDR)和起始IP-终止IP计算网段(IPV4和IPV6)
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)相关推荐
- 计算机网络习题(IP地址分类及CIDR划分方法)
计算机网络习题(IP地址分类及CIDR划分方法) 题目描述: 已知地址块中的一个地址是140.120.84.24/20. (1)求这个地址块中的最小地址和最大地址 (2)地址掩码是什么? (3)地址块 ...
- 如何查询你电脑的IP地址?一文带你搞懂IP地址
上一章介绍了数据链路层--以太网数据帧的报文格式(你知道以太网数据帧在网络中如何发送和接收的吗?一文带你搞懂它),本章介绍下网络层--IP地址. 大家都知道计算机都会有一个IP地址,只有配置了IP地址 ...
- IP地址和子网划分学习笔记之《IP地址详解》
在学习IP地址和子网划分前,必须对进制计数有一定了解,尤其是二进制和十进制之间的相互转换,对于我们掌握IP地址和子网的划分非常有帮助,可参看如下目录详文. IP地址和子网划分学习笔记相关篇章: 1.I ...
- php验证ip地址的函数,php使用preg_match()函数验证ip地址的方法
本文实例讲述了php使用preg_match()函数验证ip地址的方法.分享给大家供大家参考,具体如下: 代码一.正则实现preg_match("/^(?:25[0-5]|2[0-4]d|1 ...
- 找到特定ip地址 修改ip_您如何找到网站的IP地址?
找到特定ip地址 修改ip Whether you are in it just for a bit of geeky fun, or are seriously wanting to know th ...
- 如何在庞大的ip地址库中快速定位到对应的ip地址所对应的归属地?
通过ip地址查看 ip地址的归属地,这个功能实现起来并不复杂,它是通过维护一个很大的ip地址库来实现的,比如查找 202..133.3 该ip地址库,那便会在对应的ip地址库中找到 一个区间 如 [2 ...
- Android 手机上获取手机当前上网IP地址(手机网关给手机号分配的IP)
Android 手机上获取手机当前上网IP地址 (手机网关给手机号分配的IP) 每个手机上网通过移动网关的时候,网关都会给该手机号分配一个IP地址(当然这个IP地址会在下线上线后会改变,网关都有记录的 ...
- xp系统服务器的ip地址怎么查,xp怎么配置ip地址|xp系统怎么样查看自己的ip地址...
xp怎么配置ip地址 现在电脑要上网一般情况下都是自动获取IP地址的,如果想配置静态IP地址要怎么配置呢?对于新手来说不懂的怎么操作,其实很简单的,几步就可以配置好.如下图有解说. 1:首先进入到操作 ...
- 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 ...
最新文章
- [导入]WCF后传系列(6):消息如何传递之绑定Part 1
- java中bpmn流程图_Java学习之BPMN知识以及Activiti的流程部署
- Windows 系统中常见的 Shell 命令总结(不时补充)
- CodeFirst Update-Database 出现对象'DF__**__**__**' 依赖于 列'**'。
- 正态分布的前世今生:正态魅影
- APP架子迁移指南(一)
- 10个微型计算机应用的例子,微型计算机原理与接技术版简答题.doc
- 杰出的橙色网站设计案例
- 无线通讯射频测试软件,ISIS射频工具(专业射频测试软件)V2.03 正式版
- 乐优商城(12)--授权中心
- HBase常用Shell命令详解
- 最速下降法matlab全局最小值_matlab实现最速下降法和dfp求函数最小值
- 怎样学习数据结构? 伯克利神课CS61B 总结感悟,学习指南和避坑建议
- html表格打印自动换行,html 表格自动换行问题
- 【Unity】在Scene窗口中发射射线
- 最全的程序化交易模型设计思路在这里
- 音乐播放器mplayer的简单使用
- CPM-Nets: Cross Partial Multi-View Networks
- 免费获取对方ip地址PHP源码
- 王道考研操作系统复习笔记