栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

基于Java检查IPv6地址的合法性

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于Java检查IPv6地址的合法性

这篇文章主要介绍了基于Java检查IPv6地址的合法性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

由于IPv4资源即将耗尽,IPv6将要正式启用,这是大势所趋。

一些现有的服务和应用逐步要对IPv6支持,目前还处在过渡阶段。

提前了解一些IPv6的知识,还是有必要的。

如何判断一个IP地址,是否为IPv6地址呢?

以下代码是用Java实现的,用于校验IPv6地址合法性。

代码如下:

import java.text.Normalizer;
import java.text.Normalizer.Form;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class IPV6Check {
 
  public static void main(String[] args) {
    String ipv6_1 = "2019:db8:a583:64:c68c:d6df:600c:ee9a";
    String ipv6_2 = "2019:db8:a583::9e42:be55:53a7";
    String ipv6_3 = "2019:db8:a583:::9e42:be55:53a7";
    String ipv6_4 = "1:2:3:4:5::192.168.254.254";
    String ipv6_5 = "ABCD:910A:2222:5498:8475:1111:3900:2020";
    String ipv6_6 = "1030::C9B4:FF12:48AA:1A2B";
    String ipv6_7 = "2019:0:0:0:0:0:0:1";
    String ipv6_8 = "::0:0:0:0:0:0:1";
    String ipv6_9 = "2019:0:0:0:0::";
    String ipv6_10= "2048:877e:31::7";

    String resultLine = "n==> ";
    String splitLine = "n----------------------------------------------------n";
    System.out.println(ipv6_1 + resultLine + isValidIpv6Addr(ipv6_1) + splitLine);
    System.out.println(ipv6_2 + resultLine + isValidIpv6Addr(ipv6_2) + splitLine);
    System.out.println(ipv6_3 + resultLine + isValidIpv6Addr(ipv6_3) + splitLine);
    System.out.println(ipv6_4 + resultLine + isValidIpv6Addr(ipv6_4) + splitLine);
    System.out.println(ipv6_5 + resultLine + isValidIpv6Addr(ipv6_5) + splitLine);
    System.out.println(ipv6_6 + resultLine + isValidIpv6Addr(ipv6_6) + splitLine);
    System.out.println(ipv6_7 + resultLine + isValidIpv6Addr(ipv6_7) + splitLine);
    System.out.println(ipv6_8 + resultLine + isValidIpv6Addr(ipv6_8) + splitLine);
    System.out.println(ipv6_9 + resultLine + isValidIpv6Addr(ipv6_9) + splitLine);
    System.out.println(ipv6_10 + resultLine + isValidIpv6Addr(ipv6_10) + splitLine);
  }

  
  public static boolean isValidIpv6Addr(String ipAddr) {
 
    String regex = "(^((([0-9A-Fa-f]{1,4}:){7}(([0-9A-Fa-f]{1,4}){1}|:))"
 + "|(([0-9A-Fa-f]{1,4}:){6}((:[0-9A-Fa-f]{1,4}){1}|"
 + "((22[0-3]|2[0-1][0-9]|[0-1][0-9][0-9]|"
 + "([0-9]){1,2})([.](25[0-5]|2[0-4][0-9]|"
 + "[0-1][0-9][0-9]|([0-9]){1,2})){3})|:))|"
 + "(([0-9A-Fa-f]{1,4}:){5}((:[0-9A-Fa-f]{1,4}){1,2}|"
 + ":((22[0-3]|2[0-1][0-9]|[0-1][0-9][0-9]|"
 + "([0-9]){1,2})([.](25[0-5]|2[0-4][0-9]|"
 + "[0-1][0-9][0-9]|([0-9]){1,2})){3})|:))|"
 + "(([0-9A-Fa-f]{1,4}:){4}((:[0-9A-Fa-f]{1,4}){1,3}"
 + "|:((22[0-3]|2[0-1][0-9]|[0-1][0-9][0-9]|"
 + "([0-9]){1,2})([.](25[0-5]|2[0-4][0-9]|[0-1][0-9][0-9]|"
 + "([0-9]){1,2})){3})|:))|(([0-9A-Fa-f]{1,4}:){3}((:[0-9A-Fa-f]{1,4}){1,4}|"
 + ":((22[0-3]|2[0-1][0-9]|[0-1][0-9][0-9]|"
 + "([0-9]){1,2})([.](25[0-5]|2[0-4][0-9]|"
 + "[0-1][0-9][0-9]|([0-9]){1,2})){3})|:))|"
 + "(([0-9A-Fa-f]{1,4}:){2}((:[0-9A-Fa-f]{1,4}){1,5}|"
 + ":((22[0-3]|2[0-1][0-9]|[0-1][0-9][0-9]|"
 + "([0-9]){1,2})([.](25[0-5]|2[0-4][0-9]|"
 + "[0-1][0-9][0-9]|([0-9]){1,2})){3})|:))"
 + "|(([0-9A-Fa-f]{1,4}:){1}((:[0-9A-Fa-f]{1,4}){1,6}"
 + "|:((22[0-3]|2[0-1][0-9]|[0-1][0-9][0-9]|"
 + "([0-9]){1,2})([.](25[0-5]|2[0-4][0-9]|"
 + "[0-1][0-9][0-9]|([0-9]){1,2})){3})|:))|"
 + "(:((:[0-9A-Fa-f]{1,4}){1,7}|(:[fF]{4}){0,1}:((22[0-3]|2[0-1][0-9]|"
 + "[0-1][0-9][0-9]|([0-9]){1,2})"
 + "([.](25[0-5]|2[0-4][0-9]|[0-1][0-9][0-9]|([0-9]){1,2})){3})|:)))$)";
 
    if (ipAddr == null) {
      System.out.println("IPv6 address is null ");
      return false;
    }
    ipAddr = Normalizer.normalize(ipAddr, Form.NFKC);
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(ipAddr);
 
    boolean match = matcher.matches();
    if (!match) {
System.out.println("Invalid IPv6 address = " + ipAddr);
    }
 
    return match;
  }
 
}

运行结果如下:

2019:db8:a583:64:c68c:d6df:600c:ee9a
==> true
----------------------------------------------------

2019:db8:a583::9e42:be55:53a7
==> true
----------------------------------------------------

Invalid IPv6 address = 2019:db8:a583:::9e42:be55:53a7
2019:db8:a583:::9e42:be55:53a7
==> false
----------------------------------------------------

1:2:3:4:5::192.168.254.254
==> true
----------------------------------------------------

ABCD:910A:2222:5498:8475:1111:3900:2020
==> true
----------------------------------------------------

1030::C9B4:FF12:48AA:1A2B
==> true
----------------------------------------------------

2019:0:0:0:0:0:0:1
==> true
----------------------------------------------------

::0:0:0:0:0:0:1
==> true
----------------------------------------------------

2019:0:0:0:0::
==> true
----------------------------------------------------

2048:877e:31::7
==> true
----------------------------------------------------

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/135483.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号