最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年01月14日 09:30:32   作者:龍凌云端  
這篇文章主要介紹了基于Java檢查IPv6地址的合法性,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

這篇文章主要介紹了基于Java檢查IPv6地址的合法性,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

由于IPv4資源即將耗盡,IPv6將要正式啟用,這是大勢所趨。

一些現(xiàn)有的服務和應用逐步要對IPv6支持,目前還處在過渡階段。

提前了解一些IPv6的知識,還是有必要的。

如何判斷一個IP地址,是否為IPv6地址呢?

以下代碼是用Java實現(xiàn)的,用于校驗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);
  }

  /**
   * 校驗IPv6地址的合法性
   * @param ipAddr
   * @return
   */
  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;
  }
 
}

運行結(jié)果如下:

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
----------------------------------------------------

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Java中的Semaphore如何使用

    Java中的Semaphore如何使用

    Semaphore實際上是一種共享鎖,因為它允許多個線程并發(fā)獲取共享的資源,在Semaphore對象創(chuàng)建時必須設置可用令牌的初始數(shù)量permits,用于控制并發(fā)時同時獲取資源權(quán)限的線程數(shù)量,這篇文章主要介紹了Java中的Semaphore如何使用,需要的朋友可以參考下
    2022-06-06
  • Javax Validation自定義注解進行身份證號校驗

    Javax Validation自定義注解進行身份證號校驗

    這篇文章主要為大家詳細介紹了如何通過Javax Validation自定義注解進行身份證號校驗,文中的示例代碼講解詳細,有需要的小伙伴可以參考一下
    2024-10-10
  • Java設計模式之代理模式解析

    Java設計模式之代理模式解析

    這篇文章主要介紹了Java設計模式之代理模式解析,代理模式為一個對象提供一個替身,以控制對這個對象的訪問,即通過代理對象訪問目標對象,需要的朋友可以參考下
    2023-12-12
  • java?面向?qū)ο蟠a塊及不同位置對屬性賦值的執(zhí)行順序

    java?面向?qū)ο蟠a塊及不同位置對屬性賦值的執(zhí)行順序

    這篇文章主要介紹了java面向?qū)ο蟠a塊及不同位置對屬性賦值的執(zhí)行順序,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • tomcat connection-timeout連接超時源碼解析

    tomcat connection-timeout連接超時源碼解析

    這篇文章主要為大家介紹了tomcat connection-timeout連接超時源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • java代碼獲取UUID的實現(xiàn)示例

    java代碼獲取UUID的實現(xiàn)示例

    本文主要介紹了java代碼獲取UUID的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • java dom4j解析xml用到的幾個方法

    java dom4j解析xml用到的幾個方法

    這篇文章主要介紹了java dom4j解析xml用到的幾個方法,有需要的朋友可以參考一下
    2013-12-12
  • 淺談Java并發(fā)編程之Lock鎖和條件變量

    淺談Java并發(fā)編程之Lock鎖和條件變量

    這篇文章主要介紹了淺談Java并發(fā)編程之Lock鎖和條件變量,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • Spring P標簽的使用詳解

    Spring P標簽的使用詳解

    這篇文章主要介紹了Spring P標簽的使用詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • maven項目無法讀取到resource文件夾的問題

    maven項目無法讀取到resource文件夾的問題

    這篇文章主要介紹了maven項目無法讀取到resource文件夾的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11

最新評論

赣榆县| 高雄市| 汉川市| 绥德县| 乐陵市| 福贡县| 鄂尔多斯市| 忻城县| 镶黄旗| 双辽市| 彰化市| 巴塘县| 吴忠市| 鄯善县| 福贡县| 新干县| 上饶市| 达拉特旗| 建水县| 邵阳市| 青州市| 徐水县| 伊春市| 大英县| 昔阳县| 荥阳市| 惠东县| 县级市| 铁力市| 灵丘县| 文化| 桦甸市| 鄂托克前旗| 通海县| 麟游县| 和林格尔县| 五大连池市| 连城县| 昭苏县| 大英县| 永昌县|