`
arcticfox9902
  • 浏览: 107101 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

[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

ffff:1.2.3.4格式叫做 IPv4 映射地址 ,是不建议使用的。而: :1.2.3.4格式叫做 IPv4 一致地址
IPv4 地址可以很容易的转化为 IPv6格式。举例来说,如果 IPv4的一个地址为 135.75.43.52(十六进制为 0x874B2B34),它可以被转化为 0000:0000:0000:0000:0000:0000:874B:2B34或者: :874B:2B34。同时,还可以使用混合符号( IPv4- compatible address),则地址可以为: :135.75.43.52

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"

 

以上。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics