[Google Guava札记](四)net
3 com.google.common.net:这个 package包含了与主机标示 (数字 IP和域名 )相关的工具方法和工具类。
3.1 HostSpecifier:与主机标示相关的类,内部用 private字符串以 ip或域名来保存主机地址。
内部类:
TeredoInfo: Teredo—— 一种通过网络地址转换器 (NAT) 发送 IPv4 封装的 IPv6 数据包的 IPv6 转换技术。
静态方法:
fromValid(String specifier):返回 HostSpecifier。将字符串 specifier解析为 ip或域名,根据解析结果创建 HostSpecifier的实例。
from(String specifier):返回 HostSpecifier。如果知道 specifier是有效的就直接调用 fromValid(),否则调用 from()。
isValid(String specifier):判断 specifier是否是有效的主机地址。
3.2 InetAddresses:提供了与 InetAddress类相关的静态工具方法。
静态方法:
forString(String ipString):如果 ipString是 ip地址则返回 InetAddress,否则会抛出异常。
isInetAddress(String ipString):判断 ipString是否是有效的 ip地址。
toUriString(InetAddress ip):返回 ip的字符串形式。 IPV4的形式类似于: 127.0.0.0,而 IPV6的形式类似于: [2001:db8::1]。
forUriString(String hostAddr):根据 Uri字符串创建 InetAddress的实例。
isUriInetAddress(String ipString):判断 ipString是否为 Uri形式的 IP地址的字符串。
isCompatIPv4Address(Inet6Address ip):判断 ip是否是 IPv4兼容地址。
getCompatIPv4Address(Inet6Address ip):从 ip获取 IPv4地址,返回 Inet4Address的实例。
如果 IPv6地址实际上是 IPv4的地址,后 32位元可以用 10进制数表示;因此: ffff:192.168.89.9 等价于: :ffff:c0a8:5909,但不等价于: :192.168.89.9 和: :c0a8:5909。
is6to4Address(Inet6Address ip):判断 ip是否是 6to4地址。
get6to4Address(Inet6Address ip):从 ip获取植入的 IPv4地址,返回 Inet4Address的实例。
6to4隧道可以将多个
IPv6域通过
IPv4网络连接到
IPv6网络。它和
IPv4兼容
IPv6自动隧道类似,使用一种特殊的地址——
2002:a.b.c.d:xxxx:xxxx:xxxx:xxxx:xxxx格式的
6to4地址。其中
a.b.c.d是内嵌在
IPv6地址中的
IPv4
地址,可以用来查找
6to4网络中的其它终端。
6to4地址有
64位网络前缀,其中前
48位由路由器上的
IPv4地址决定,用户不能改变,后
16位由用户
自己定义。这样,这个边缘路由器后面就可以连接一组网络前缀不同的网络。
isTeredoAddress(Inet6Address ip) :判断ip 是否是Teredo 地址。
getTeredoInfo(Inet6Address ip) :从ip 获取TeredoInfo 。
isIsatapAddress(Inet6Address ip) :判断ip 是否是Isatap 地址。
getIsatapIPv4Address(Inet6Address ip) :从ip 获取IPv4 地址,返回Inet4Address 的实例。
hasEmbeddedIPv4ClientAddress(Inet6Address ip) :判断 ip 中是否有嵌入的 IPv4 地址。
getEmbeddedIPv4ClientAddress(Inet6Address ip) :获取 ip 中嵌入的 IPv4 地址。
getCoercedIPv4Address(InetAddress ip) :将 ip 强制转换为 IPv4 地址。
coerceToInteger(InetAddress ip) :把 ip 强制转换为 int ,不管它是不是 IPv4 地址。
fromInteger( int address) :将 address 转换为 Inet4Address 。
fromLittleEndianByteArray( byte [] addr) :将 addr 转换为 InetAddress 。
3.3 InternetDomainName:不可改变的,符合语法规范的互联网域名,不保证该域名存在。
静态方法:
fromLenient(String domain):返回一个 InternetDomainName的实例。
3.4 TldPatterns:提供了判断字符串是否为 TLD的依据。
在因特网上,高端域 (TLD)用来标识因特网址域名中最普通的部分, TLD要么是一般的高端域 (gTLD) ,例如用于标识商业的 "com"及用于标识教育的 "edu"等等 ,要么就是国家代码高端域 (ccTLD),例如用于标识法国的 "fr"以及标识冰岛的 "is"。
以上。