日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

java ipv6校验_Java对IPv6的支持详解:支持情况、相关API、演示代码等

發(fā)布時(shí)間:2024/3/13 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java ipv6校验_Java对IPv6的支持详解:支持情况、相关API、演示代码等 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文由朱益盛、楊暉、傅嘯分享,來(lái)自IBM Developer社區(qū),原題“使用 Java 開發(fā)兼容 IPv6 的網(wǎng)絡(luò)應(yīng)用程序”,本次收錄時(shí)有改動(dòng)。

1、引言

前幾天,有個(gè)群友跟我討論用 MobileIMSDK?寫的IM服務(wù)端想支持IPv6的問(wèn)題。因?yàn)楸娝苤脑?#xff0c;IPv4早就不夠用,現(xiàn)在國(guó)內(nèi)從國(guó)家層面都在大力推廣IPv6的普及,所以包括事業(yè)單位、國(guó)企在內(nèi),現(xiàn)在搞信息化建議,都要考慮IPv6的支持。

我忽然感覺(jué)這個(gè)問(wèn)題很難回答,因?yàn)閷?duì)于普通的網(wǎng)絡(luò)通信程序開發(fā)者來(lái)說(shuō),目前真正的IPv6的開發(fā)和測(cè)試環(huán)境并不容易得到,所以想要真正說(shuō)清楚Java對(duì)于IPv6地支持情況,只能借助零碎的資料和網(wǎng)貼,可能并不完整和準(zhǔn)備。

理論上,Java對(duì)IPv6的支持對(duì)于程序員來(lái)說(shuō)都是透明的,幾乎不需要代碼層面的處理。但它到底是怎么支持的?支持到什么程度?對(duì)JDK版本有什么要求?對(duì)操作系統(tǒng)有什么要求?等等,我認(rèn)為還是有必要詳細(xì)研究了解一下。

本文將用通俗易懂的文字,來(lái)講解Java對(duì)IPv6的支持現(xiàn)狀,包括關(guān)的技術(shù)原理、可以使用的API、以及一些可以運(yùn)行的演示代碼片段等,希望能讓你更直觀的了解Java對(duì)于IPv6的支持情況。

閱讀提示:限于篇幅,本文假設(shè)你已了解IPv6技術(shù)是什么,如您對(duì)它一無(wú)所知,建議先閱讀白話式入門文章:《一文讀懂什么是IPv6》。

2、推薦資料

3、技術(shù)背景

目前我們使用的是第二代互聯(lián)網(wǎng) IPv4 技術(shù),它的最大問(wèn)題是網(wǎng)絡(luò)地址資源有限,從理論上講,可以編址 1600 萬(wàn)個(gè)網(wǎng)絡(luò)、40 億臺(tái)主機(jī)。但采用 A、B、C 三類編址方式后,可用的網(wǎng)絡(luò)地址和主機(jī)地址的數(shù)目大打折扣,以至目前的 IP 地址近乎枯竭。網(wǎng)絡(luò)地址不足,嚴(yán)重地制約了全球互聯(lián)網(wǎng)的應(yīng)用和發(fā)展。

一方面是地址資源數(shù)量的限制,另一方面是隨著電子技術(shù)及網(wǎng)絡(luò)技術(shù)的發(fā)展,計(jì)算機(jī)網(wǎng)絡(luò)將進(jìn)入人們的日常生活,可能身邊的每一樣?xùn)|西都需要連入全球因特網(wǎng)。在這種網(wǎng)絡(luò)空間匱乏的環(huán)境下,IPv6 應(yīng)運(yùn)而生。它的產(chǎn)生不但解決了網(wǎng)絡(luò)地址資源數(shù)量的問(wèn)題,同時(shí)也為除電腦外的設(shè)備連入互聯(lián)網(wǎng)在數(shù)量限制上掃清了障礙。

如果說(shuō) IPv4 實(shí)現(xiàn)的只是人機(jī)對(duì)話,那么 IPv6 則擴(kuò)展到任意事物之間的對(duì)話,它不僅可以為人類服務(wù),還將服務(wù)于眾多硬件設(shè)備,如家用電器、傳感器、遠(yuǎn)程照相機(jī)、汽車等,它將是無(wú)時(shí)不在,無(wú)處不在的深入社會(huì)每個(gè)角落的真正的寬帶網(wǎng),它所帶來(lái)的經(jīng)濟(jì)效益也將非常巨大。

當(dāng)然,IPv6 并非十全十美、一勞永逸,不可能解決所有問(wèn)題。IPv6 只能在發(fā)展中不斷完善,也不可能在一夜之間發(fā)生,過(guò)渡需要時(shí)間和成本,但從長(zhǎng)遠(yuǎn)看,IPv6 有利于互聯(lián)網(wǎng)的持續(xù)和長(zhǎng)久發(fā)展。目前,國(guó)際互聯(lián)網(wǎng)組織已經(jīng)決定成立兩個(gè)專門工作組,制定相應(yīng)的國(guó)際標(biāo)準(zhǔn)。

4、Java 對(duì) IPv6 的支持

隨著 IPv6 越來(lái)越受到業(yè)界的重視,Java 從 1.4 版開始支持 Linux 和 Solaris 平臺(tái)上的 IPv6。1.5 版起又加入了 Windows 平臺(tái)上的支持。

相對(duì)于 C++,Java 很好得封裝了 IPv4 和 IPv6 的變化部分,遺留代碼都可以原生支持 IPv6,而不用隨底層具體實(shí)現(xiàn)的變化而變化。

那么 Java 是如何來(lái)支持 IPv6 的呢?

Java 網(wǎng)絡(luò)棧會(huì)優(yōu)先檢查底層系統(tǒng)是否支持 IPv6,以及采用的何種 IP 棧系統(tǒng)。如果是雙棧系統(tǒng),那它直接創(chuàng)建一個(gè) IPv6 套接字(如圖 1)。

圖 1 - 雙棧結(jié)構(gòu):

對(duì)于分隔棧系統(tǒng),Java 則創(chuàng)建 IPv4/v6 兩個(gè)套接字(如圖 2):

1)如果是 TCP 客戶端程序:一旦其中某個(gè)套接字連接成功,另一個(gè)套接字就會(huì)被關(guān)閉,這個(gè)套接字連接使用的 IP 協(xié)議類型也就此被固定下來(lái);

2)如果是 TCP 服務(wù)器端程序:因?yàn)闊o(wú)法預(yù)期客戶端使用的 IP 協(xié)議,所以 IPv4/v6 兩個(gè)套接字會(huì)被一直保留;

3)對(duì)于 UDP 應(yīng)用程序:無(wú)論是客戶端還是服務(wù)器端程序,兩個(gè)套接字都會(huì)保留來(lái)完成通信。

圖 2 - 分隔棧結(jié)構(gòu):

5、如何驗(yàn)證 IPv6 地址

5.1 IPv6 地址表示

從 IPv4 到 IPv6 最顯著的變化就是網(wǎng)絡(luò)地址的長(zhǎng)度,IPv6 地址為 128 位長(zhǎng)度,一般采用 32 個(gè)十六進(jìn)制數(shù),但通常寫做 8 組每組 4 個(gè)十六進(jìn)制的形式。

IPv6地址組成如下圖所示:

例如:

1)2001:0db8:85a3:08d3:1319:8a2e:0370:7344?是一個(gè)合法的 IPv6 地址。如果四個(gè)數(shù)字都是零,則可以被省略;

2)2001:0db8:85a3:0000:1319:8a2e:0370:7344?等同于 2001:0db8:85a3::1319:8a2e:0370:7344。

遵從這些規(guī)則,如果因?yàn)槭÷远霈F(xiàn)了兩個(gè)以上的冒號(hào)的話,可以壓縮為一個(gè),但這種零壓縮在地址中只能出現(xiàn)一次。

因此:

2001:0DB8:0000:0000:0000:0000:1428:57ab

2001:0DB8:0000:0000:0000::1428:57ab

2001:0DB8:0:0:0:0:1428:57ab

2001:0DB8:0::0:1428:57ab

2001:0DB8::1428:57ab

都是合法的地址,并且他們是等價(jià)的。但?2001::25de::cade?是非法的(因?yàn)檫@樣會(huì)使得搞不清楚每個(gè)壓縮中有幾個(gè)全零的分組)。同時(shí)前導(dǎo)的零可以省略,因此:2001:0DB8:02de::0e13?等于?2001: DB8:2de::e13。

5.2 IPv6 地址校驗(yàn)

IPv4 地址可以很容易的轉(zhuǎn)化為 IPv6 格式。

舉例來(lái)說(shuō):如果 IPv4 的一個(gè)地址為?135.75.43.52(十六進(jìn)制為?0x874B2B34),它可以被轉(zhuǎn)化為?0000:0000:0000:0000:0000:0000:874B:2B34?或者::874B:2B34。同時(shí),還可以使用混合符號(hào)(IPv4- compatible address),則地址可以為::135.75.43.52。

在 IPv6 的環(huán)境下開發(fā) Java 應(yīng)用,或者移植已有的 IPv4 環(huán)境下開發(fā)的 Java 應(yīng)用到 IPv6 環(huán)境中來(lái),對(duì)于 IPv6 網(wǎng)絡(luò)地址的驗(yàn)證是必須的步驟,尤其是對(duì)那些提供了 UI(用戶接口)的 Java 應(yīng)用。

所幸的是:從 Java 1.5 開始,Java就增加了對(duì) IPv6 網(wǎng)絡(luò)地址校驗(yàn)的支持。程序員可以通過(guò)簡(jiǎn)單地調(diào)用方法?sun.net.util.IPAddressUtil.isIPv6LiteralAddress()來(lái)驗(yàn)證一個(gè) String 類型的輸入是否是一個(gè)合法的 IPv6 網(wǎng)絡(luò)地址。

為了更深入一步地了解 IPv6 的網(wǎng)絡(luò)地址規(guī)范,及其驗(yàn)證算法,筆者參閱了一些材料,包括上文所述的方法?sun.net.util.IPAddressUtil.isIPv6LiteralAddress()?的源代碼,以及目前網(wǎng)絡(luò)上流傳的一些 IPv6 網(wǎng)絡(luò)地址的正則表達(dá)式,發(fā)現(xiàn):

1)由于 IPv6 協(xié)議所允許的網(wǎng)絡(luò)地址格式較多,規(guī)范較寬松(例如零壓縮地址,IPv4 映射地址等),所以導(dǎo)致了 IPv6 網(wǎng)絡(luò)地址的格式變化很大;

2)Java 對(duì)于 IPv6 網(wǎng)絡(luò)地址的驗(yàn)證是通過(guò)對(duì)輸入字符的循環(huán)匹配做到的,并沒(méi)有采取正則表達(dá)式的做法。其匹配過(guò)程中還依賴于其它的 Java 方法;

3)目前網(wǎng)絡(luò)上流傳的 IPv6 網(wǎng)絡(luò)地址驗(yàn)證的正則表達(dá)式通常都只能涵蓋部分地址格式,而且表達(dá)式冗長(zhǎng)難讀,非常不易于理解。

基于通用性考慮,以及為了使驗(yàn)證方法盡量簡(jiǎn)單易讀,筆者嘗試將 IPv6 網(wǎng)絡(luò)地址的格式簡(jiǎn)單分類以后,使用多個(gè)正則表達(dá)式進(jìn)行驗(yàn)證。

這種做法兼顧了通用性(基于正則表達(dá)式,所以方便用各種不同的編程語(yǔ)言進(jìn)行實(shí)現(xiàn)),以及易讀性(每個(gè)獨(dú)立的正則表達(dá)式相對(duì)簡(jiǎn)短);并且根據(jù)測(cè)試,支持目前所有的 IPv6 網(wǎng)絡(luò)地址格式類型,尚未發(fā)現(xiàn)例外。

以下是筆者用 Java 編寫的對(duì)于 IPv6 網(wǎng)絡(luò)地址的驗(yàn)證方法。此算法可被簡(jiǎn)單地用其它編程語(yǔ)言仿照重寫。

演示代碼1 - 驗(yàn)證地址:

//IPv6 address validator matches these IPv6 formats

//::ffff:21:7.8.9.221 | 2001:0db8:85a3:08d3:1319:8a2e:0370:7344

//| ::8a2e:0:0370:7344 | 2001:0db8:85a3:08d3:1319:8a2e:100.22.44.55

//| 2001:0db8::8a2e:100.22.44.55 | ::100.22.44.55 | ffff::

//And such addresses are invalid

//::8a2e:0:0370:7344.4 | 2001:idb8::111:7.8.9.111 | 2001::100.a2.44.55

//| :2001::100.22.44.55

public static boolean isIPV6Format(String ip) {

ip = ip.trim();

//in many cases such as URLs, IPv6 addresses are wrapped by []

if(ip.substring(0, 1).equals("[") && ip.substring(ip.length()-1).equals("]"))

ip = ip.substring(1, ip.length()-1);

return(1< Pattern.compile(":").split(ip).length)

//a valid IPv6 address should contains no less than 1,

//and no more than 7 ":” as separators

&& (Pattern.compile(":").split(ip).length <= 8)

//the address can be compressed, but "::” can appear only once

&& (Pattern.compile("::").split(ip).length <= 2)

//if a compressed address

&& (Pattern.compile("::").split(ip).length == 2)

//if starts with "::” – leading zeros are compressed

? (((ip.substring(0, 2).equals("::"))

? Pattern.matches("^::([\\da-f]{1,4}(:)){0,4}(([\\da-f]{1,4}(:)[\\da-f]{1,4})

|([\\da-f]{1,4})|((\\d{1,3}.){3}\\d{1,3}))", ip)

: Pattern.matches("^([\\da-f]{1,4}(:|::)){1,5}

(([\\da-f]{1,4}(:|::)[\\da-f]{1,4})|([\\da-f]{1,4})

|((\\d{1,3}.){3}\\d{1,3}))", ip)))

//if ends with "::" - ending zeros are compressed

: ((ip.substring(ip.length()-2).equals("::"))

? Pattern.matches("^([\\da-f]{1,4}(:|::)){1,7}", ip)

: Pattern.matches("^([\\da-f]{1,4}:){6}(([\\da-f]{1,4}

:[\\da-f]{1,4})|((\\d{1,3}.){3}\\d{1,3}))", ip));

}}

6、如何正規(guī)化 IPv6 地址

在網(wǎng)絡(luò)程序開發(fā)中,經(jīng)常使用 IP 地址來(lái)標(biāo)識(shí)一個(gè)主機(jī),例如記錄終端用戶的訪問(wèn)記錄等。由于 IPv6 具有有零壓縮地址等多種表示形式,因此直接使用 IPv6 地址作為標(biāo)示符,可能會(huì)帶來(lái)一些問(wèn)題。

為了避免這些問(wèn)題,在使用 IPv6 地址之前,有必要將其正規(guī)化。

除了通過(guò)我們熟知的正則表達(dá)式,筆者在開發(fā)過(guò)程中發(fā)現(xiàn)使用一個(gè)簡(jiǎn)單的 Java API 也可以達(dá)到相同的效果。

演示代碼2 - 正規(guī)化地址:

InetAddress inetAddr = InetAddress.getByName(ipAddr);

ipAddr = inetAddr.getHostAddress();

System.out.println(ipAddr);

InetAddress.getByName(String) 方法接受的參數(shù)既可以是一個(gè)主機(jī)名,也可以是一個(gè) IP 地址字符串。

我們輸入任一信息的合法 IPv6 地址,再通過(guò)?getHostAddress()?方法取出主機(jī) IP 時(shí),地址字符串 ipAddr 已經(jīng)被轉(zhuǎn)換為完整形式。

例如輸入?2002:97b:e7aa::97b:e7aa?,上述代碼執(zhí)行過(guò)后,零壓縮部分將被還原,ipAddr 變?yōu)?2002:97b:e7aa:0:0:0:97b:e7aa?。

7、如何獲取本機(jī) IPv6 地址

有時(shí)為了能夠注冊(cè) listener,開發(fā)人員需要使用本機(jī)的 IPv6 地址,這一地址不能簡(jiǎn)單得通過(guò)?InetAddress.getLocalhost()?獲得。因?yàn)檫@樣有可能獲得諸如0:0:0:0:0:0:0:1?這樣的特殊地址。使用這樣的地址,其他服務(wù)器將無(wú)法把通知發(fā)送到本機(jī)上,因此必須先進(jìn)行過(guò)濾,選出確實(shí)可用的地址。以下代碼實(shí)現(xiàn)了這一功能,思路是遍歷網(wǎng)絡(luò)接口的各個(gè)地址,直至找到符合要求的地址。

演示代碼3 - 獲取本機(jī) IP 地址:

public static String getLocalIPv6Address() throws IOException {

InetAddress inetAddress = null;

Enumeration networkInterfaces = NetworkInterface

.getNetworkInterfaces();

outer:

while(networkInterfaces.hasMoreElements()) {

Enumeration inetAds = networkInterfaces.nextElement()

.getInetAddresses();

while(inetAds.hasMoreElements()) {

inetAddress = inetAds.nextElement();

//Check if it's ipv6 address and reserved address

if(inetAddress instanceofInet6Address

&& !isReservedAddr(inetAddress)) {

break outer;

}

}

}

String ipAddr = inetAddress.getHostAddress();

// Filter network card No

int index = ipAddr.indexOf('%');

if(index > 0) {

ipAddr = ipAddr.substring(0, index);

}

return ipAddr;

}

/**

* Check if it's "local address" or "link local address" or "loopbackaddress"

* @param ip address

* @return result

*/

private static boolean isReservedAddr(InetAddress inetAddr) {

if(inetAddr.isAnyLocalAddress() || inetAddr.isLinkLocalAddress()

|| inetAddr.isLoopbackAddress()) {

return true;

}

return false;

}

一般情況下這兩個(gè)子類并不會(huì)被使用到,但是當(dāng)我們需要分別處理不同的 IP 協(xié)議時(shí)就非常有用,在這我們根據(jù)?Inet6Address?來(lái)篩選地址。

isReservedAddr()?方法過(guò)濾了本機(jī)特殊 IP 地址,包括”LocalAddress”,”LinkLocalAddress”和”LoopbackAddress”。讀者可根據(jù)自己的需要修改過(guò)濾標(biāo)準(zhǔn)。

另一個(gè)需要注意的地方是:在 windows 平臺(tái)上,取得的 IPv6 地址后面可能跟了一個(gè)百分號(hào)加數(shù)字。這里的數(shù)字是本機(jī)網(wǎng)絡(luò)適配器的編號(hào)。這個(gè)后綴并不是 IPv6 標(biāo)準(zhǔn)地址的一部分,可以去除。

8、IPv4/IPv6 雙環(huán)境下,網(wǎng)絡(luò)的選擇和測(cè)試

我們先看一下筆者所在的 IPv4/IPv6 開發(fā)測(cè)試環(huán)境及其配置方法。

筆者所處的 IPv4/IPv6 雙環(huán)境是一個(gè)典型的”6to4”雙棧網(wǎng)絡(luò),其中存在著一個(gè) IPv6 到 IPv4 的映射機(jī)制,即任意一個(gè) IPv6 地址?2002:92a:8f7a:100:a:b:c:d?在路由時(shí)會(huì)被默認(rèn)映射為 IPv4 地址?a.b.c.d,所以路由表只有一套。

在此環(huán)境內(nèi),IPv4 地址與 IPv6 地址的一一對(duì)應(yīng)是人工保證的。如果一臺(tái)客戶機(jī)使用不匹配的 IPv4 和 IPv6 雙地址,或者同時(shí)使用 DHCPv4 和 DHCPv6(可能會(huì)導(dǎo)致 IPv4 地址和 IPv6 地址不匹配),會(huì)導(dǎo)致 IPv6 的路由尋址失敗。

正因?yàn)槿绱?#xff0c;為了配置雙地址環(huán)境,我們一般使用 DHCPv4 來(lái)自動(dòng)獲取 IPv4 地址,然后人工配置相對(duì)應(yīng)的 IPv6 地址。

Windows 系統(tǒng):

1)Windows 2000 及以下:不支持 IPv6

2)Windows 2003 和 Windows XP:使用 Windows 自帶的 netsh 命令行方式添加 IPv6 地址以及 DNS, 例如:C:>netsh interface ipv6 add address “Local Area Connection” 2002:92a:8f7a:100:10:13:1:2 和 C:>netsh interface ipv6 add dns “Local Area Connection” 2002:92a:8f7a:100:10::250

3)Windows 2008 和 Windows Vista:既可以使用 Windows 網(wǎng)絡(luò)屬性頁(yè)面進(jìn)行配置,也可以使用類似 Windows 2003 和 Windows XP 的 netsh 命令行來(lái)配置

Linux 系統(tǒng)(以下是 IPv6 的臨時(shí)配置方法,即不修改配置文件,計(jì)算機(jī)重啟后配置失效):

1)Redhat Linux:最簡(jiǎn)單的方法是使用 ifconfig 命令行添加 IPv6 地址,例如:ifconfig eth0 inet6 add 2002:92a:8f7a:100:10:14:24:106/96;

2)SUSE Linux:同上。

從實(shí)踐上講:由于 Java 的面向?qū)ο筇匦?#xff0c;以及java.net?包對(duì)于 IP 地址的良好封裝,從而使得將 Java 應(yīng)用從 IPv4 環(huán)境移植到 IPv4/IPv6 雙環(huán)境,或者純 IPv6 環(huán)境變得異常簡(jiǎn)單。通常我們需要做的僅是檢查代碼并移除明碼編寫的 IPv4 地址,用主機(jī)名來(lái)替代則可。

除此以外:對(duì)于一些特殊的需求,Java 還提供了?InetAddress?的兩個(gè)擴(kuò)展類以供使用:Inet4Address?和?Inet6Address,其中封裝了對(duì)于 IPv4 和 IPv6 的特殊屬性和行為。

然而由于 Java 的多態(tài)特性,使得程序員一般只需要使用父類?InetAddress,Java 虛擬機(jī)可以根據(jù)所封裝的 IP 地址類型的不同,在運(yùn)行時(shí)選擇正確的行為邏輯。所以在多數(shù)情況下,程序員并不需要精確控制所使用的類型及其行為,一切交給 Java 虛擬機(jī)即可。

具體的新增類型及其新增方法,請(qǐng)具體參閱Java的API文檔。

另外:在 IPv4/IPv6 雙環(huán)境中,對(duì)于使用 Java 開發(fā)的網(wǎng)絡(luò)應(yīng)用,比較值得注意的是以下兩個(gè) IPv6 相關(guān)的 Java 虛擬機(jī)系統(tǒng)屬性。

java.net.preferIPv4Stack=

java.net.preferIPv6Addresses=

preferIPv4Stack(默認(rèn) false)表示如果存在 IPv4 和 IPv6 雙棧,Java 程序是否優(yōu)先使用 IPv4 套接字。默認(rèn)值是優(yōu)先使用 IPv6 套接字,因?yàn)?IPv6 套接字可以與對(duì)應(yīng)的 IPv4 或 IPv6 主機(jī)進(jìn)行對(duì)話;相反如果優(yōu)先使用 IPv4,則只不能與 IPv6 主機(jī)進(jìn)行通信。

preferIPv6Addresses(默認(rèn) false)表示在查詢本地或遠(yuǎn)端 IP 地址時(shí),如果存在 IPv4 和 IPv6 雙地址,Java 程序是否優(yōu)先返回 IPv6 地址。Java 默認(rèn)返回 IPv4 地址主要是為了向后兼容,以支持舊有的 IPv4 驗(yàn)證邏輯,以及舊有的僅支持 IPv4 地址的服務(wù)。

9、寫在最后

本文對(duì) IPv6 地址做了一些基本的介紹,著重介紹了如何使用 Java 開發(fā)兼容 IPv6 的網(wǎng)絡(luò)應(yīng)用程序,包括如何驗(yàn)證 IPv6 地址,如何正規(guī)化 IPv6 地址的表示,如何獲取本機(jī) IPv6 的地址,以及在 IPv4/IPv6 雙地址環(huán)境下的網(wǎng)絡(luò)選擇和測(cè)試。

同時(shí)作者結(jié)合在日常工作中使用的 Java 代碼片段,希望呈現(xiàn)給讀者一個(gè)全方位的、具有較強(qiáng)實(shí)用性的文本介紹,也希望本文能給讀者在以后使用 Java 開發(fā) IPv6 兼容程序的過(guò)程中帶來(lái)一些幫助。

10、參考資料

附錄:相關(guān)文章

本文已同步發(fā)布于“即時(shí)通訊技術(shù)圈”公眾號(hào)。

總結(jié)

以上是生活随笔為你收集整理的java ipv6校验_Java对IPv6的支持详解:支持情况、相关API、演示代码等的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。