|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.net
类 InetAddress
java.lang.Object java.net.InetAddress
- 所有已实现的接口:
- Serializable
- 直接已知子类:
- Inet4Address, Inet6Address
-
public class InetAddress
- extends Object
- implements Serializable
此类表示互联网协议 (IP) 地址。
IP 地址是 IP 使用的 32 位或 128 位无符号数字,它是一种低级协议,UDP 和 TCP 协议都是在它的基础上构建的。IP 地址的体系结构是由 RFC 790:Assigned Numbers、 RFC 1918:Address Allocation for Private Internets、RFC 2365:Administratively Scoped IP Multicast 和 RFC 2373:IP Version 6 Addressing Architecture 定义。InetAddress 的实例包含 IP 地址,还可能包含相应的主机名(取决于它是否用主机名构造或者是否已执行反向主机名解析)。
地址类型
单播 单个接口的标识符。发送到单播地址的数据包被交付给由该地址标识的接口。 多播地址:也称为 anylocal 地址或通配符地址。一定不能将其分配给任何节点。它指示缺少地址。它的一个使用示例是可以作为绑定的目标,这允许服务器在服务器主机有多个接口的情况下接收任何接口上的客户端连接。
未指定 地址一定不能用作 IP 数据包的目标地址。
回送 地址:它是分配给回送接口的地址。发送到此 IP 地址的任何内容都将返回并作为本地主机上的 IP 输入。此地址常常在测试客户机时使用。
多播 一组接口(通常属于不同的节点)的标识符。发送到多播地址的数据包被交付给由该地址标识的所有接口。
IP 地址范围
链接本地 地址设计用于在单个链接上寻址以解决诸如自动地址配置、邻居发现 (neighbor discovery) 或没有路由器时的问题。
站点本地 地址设计用于在不需要全球前缀时站点内部寻址。
全球 地址在 Internet 中是唯一的。
IP 地址的文本表示形式
IP 地址的文本表示形式是特定于地址系列的。有关 IPv4 地址格式,请参阅 Inet4Address#format,有关 IPv6 地址格式,请参阅 Inet6Address#format。
主机名解析
主机名到 IP 地址的解析 通过使用本地机器配置信息和网络命名服务(如域名系统(Domain Name System,DNS)和网络信息服务(Network Information Service,NIS))来实现。要使用的特定命名服务默认情况下是本地机器配置的那个。对于任何主机名称,都返回其相应的 IP 地址。反向名称解析 意味着对于任何 IP 地址,都返回与 IP 地址关联的主机。
InetAddress 类提供将主机名解析为其 IP 地址(或反之)的方法。
InetAddress 缓存
InetAddress 类具有一个存储成功及不成功主机名解析的缓存。正缓存用于防止 DNS 哄骗攻击;而负缓存用于提高性能。默认情况下,正主机名解析的结果会永远缓存,因为不存在何时可以安全移除缓存条目的一般规则。不成功主机名解析的结果缓存非常短的时间(10 秒)以提高性能。
在某些特定情形下,即可以确定不可能发生 DNS 哄骗攻击时,可以将 Java 安全属性设置为另外的 Time-to-live (TTL) 值来进行正缓存。类似地,系统管理员在需要时可以配置另外的负缓存 TTL 值。
两个 Java 安全属性控制着用于正负主机名解析缓存的 TTL 值:
- networkaddress.cache.ttl(默认值:-1)
- 指示从名称服务进行成功名称查找的缓存策略。该值被指定为整数,指示缓存成功查找的秒数。
值 -1 指示“永远缓存”。
- networkaddress.cache.negative.ttl(默认值:10)
- 指示从名称服务进行不成功名称查找的缓存策略。该值被指定为整数,指示缓存不成功查找故障的秒数。
值 0 指示“永远不缓存”。值 -1 指示“永远缓存”。
- 从以下版本开始:
- JDK1.0
- 另请参见:
-
getByAddress(byte[])
,getByAddress(java.lang.String, byte[])
,getAllByName(java.lang.String)
,getByName(java.lang.String)
,getLocalHost()
, 序列化表格
方法摘要 | |
---|---|
boolean |
equals(Object obj) 将此对象与指定对象比较。 |
byte[] |
getAddress() 返回此 InetAddress 对象的原始 IP 地址。 |
static InetAddress[] |
getAllByName(String host) 在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。 |
static InetAddress |
getByAddress(byte[] addr) 在给定原始 IP 地址的情况下,返回 InetAddress 对象。 |
static InetAddress |
getByAddress(String host, byte[] addr) 根据提供的主机名和 IP 地址创建 InetAddress。 |
static InetAddress |
getByName(String host) 在给定主机名的情况下确定主机的 IP 地址。 |
String |
getCanonicalHostName() 获取此 IP 地址的完全限定域名。 |
String |
getHostAddress() 返回 IP 地址字符串(以文本表现形式)。 |
String |
getHostName() 获取此 IP 地址的主机名。 |
static InetAddress |
getLocalHost() 返回本地主机。 |
int |
hashCode() 返回此 IP 地址的哈希码。 |
boolean |
isAnyLocalAddress() 检查 InetAddress 是否是通配符地址的实用例行程序。 |
boolean |
isLinkLocalAddress() 检查 InetAddress 是否是链接本地地址的实用例行程序。 |
boolean |
isLoopbackAddress() 检查 InetAddress 是否是回送地址的实用例行程序。 |
boolean |
isMCGlobal() 检查多播地址是否具有全球范围的实用例行程序。 |
boolean |
isMCLinkLocal() 检查多播地址是否具有链接范围的实用例行程序。 |
boolean |
isMCNodeLocal() 检查多播地址是否具有节点范围的实用例行程序。 |
boolean |
isMCOrgLocal() 检查多播地址是否具有组织范围的实用例行程序。 |
boolean |
isMCSiteLocal() 检查多播地址是否具有站点范围的实用例行程序。 |
boolean |
isMulticastAddress() 检查 InetAddress 是否是 IP 多播地址的实用例行程序。 |
boolean |
isReachable(int timeout) 测试是否可以达到该地址。 |
boolean |
isReachable(NetworkInterface netif, int ttl, int timeout) 测试是否可以达到该地址。 |
boolean |
isSiteLocalAddress() 检查 InetAddress 是否是站点本地地址的实用例行程序。 |
String |
toString() 将此 IP 地址转换为 String 。 |
从类 java.lang.Object 继承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
方法详细信息 |
---|
isMulticastAddress
public boolean isMulticastAddress()
- 检查 InetAddress 是否是 IP 多播地址的实用例行程序。
-
-
- 返回:
-
指示 InetAddress 是否是 IP 多播地址的
boolean
值 - 从以下版本开始:
- JDK1.1
isAnyLocalAddress
public boolean isAnyLocalAddress()
- 检查 InetAddress 是否是通配符地址的实用例行程序。
-
-
- 返回:
-
指示 Inetaddress 是否是通配符地址的
boolean
值 - 从以下版本开始:
- 1.4
isLoopbackAddress
public boolean isLoopbackAddress()
- 检查 InetAddress 是否是回送地址的实用例行程序。
-
-
- 返回:
-
指示 InetAddress 是否是回送地址的
boolean
值;否则返回 false。 - 从以下版本开始:
- 1.4
isLinkLocalAddress
public boolean isLinkLocalAddress()
- 检查 InetAddress 是否是链接本地地址的实用例行程序。
-
-
- 返回:
-
指示 InetAddress 是否是本地链接地址的
boolean
值;如果地址不是链接本地单播地址,则返回 false。 - 从以下版本开始:
- 1.4
isSiteLocalAddress
public boolean isSiteLocalAddress()
- 检查 InetAddress 是否是站点本地地址的实用例行程序。
-
-
- 返回:
-
指示 InetAddress 是否是站点本地地址的
boolean
值;如果地址不是站点本地单播地址,则返回 false。 - 从以下版本开始:
- 1.4
isMCGlobal
public boolean isMCGlobal()
- 检查多播地址是否具有全球范围的实用例行程序。
-
-
- 返回:
-
指示地址是否是全球范围多播地址的
boolean
值;如果它不是全球范围或多播地址,则返回 false - 从以下版本开始:
- 1.4
isMCNodeLocal
public boolean isMCNodeLocal()
- 检查多播地址是否具有节点范围的实用例行程序。
-
-
- 返回:
-
指示地址是否是节点本地范围多播地址的
boolean
值;如果它不是节点本地范围或多播地址,则返回 false - 从以下版本开始:
- 1.4