|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.net.InetAddress
public class InetAddress
此类表示互联网协议 (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 输入。此地址常常在测试客户机时使用。
多播 一组接口(通常属于不同的节点)的标识符。发送到多播地址的数据包被交付给由该地址标识的所有接口。
链接本地 地址设计用于在单个链接上寻址以解决诸如自动地址配置、邻居发现 (neighbor discovery) 或没有路由器时的问题。
站点本地 地址设计用于在不需要全局前缀时站点内部寻址。
全局 地址在 Internet 中是唯一的。
有关 IPv4 地址格式,请参阅 Inet4Address#format,有关 IPv6 地址格式,请参阅 Inet6Address#format。
反向名称解析 意味着对于任何 IP 地址,都返回与 IP 地址关联的主机。
InetAddress 类提供将主机名解析为其 IP 地址(或反之)的方法。
默认情况下,当为了防止 DNS 哄骗攻击安装了安全管理器时,正主机名解析的结果会永远缓存。当未安装安全管理器时,默认行为将缓存一段有限(与实现相关)时间的条目。不成功主机名解析的结果缓存非常短的时间(10 秒)以提高性能。
如果不需要默认行为,则可以将 Java 安全属性设置为另外的 Time-to-live (TTL) 值来进行正缓存。类似地,系统管理员在需要时可以配置另外的负缓存 TTL 值。
两个 Java 安全属性控制着用于正负主机名解析缓存的 TTL 值:
- networkaddress.cache.ttl
- 指示从名称服务进行成功名称查找的缓存策略。该值被指定为整数,指示缓存成功查找的秒数。默认设置将在某个特定于实现的时间内缓存。
值 -1 指示“永远缓存”。
- networkaddress.cache.negative.ttl(默认值:10)
- 指示从名称服务进行不成功名称查找的缓存策略。该值被指定为整数,指示缓存不成功查找故障的秒数。
值 0 指示“永远不缓存”。值 -1 指示“永远缓存”。
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 |
方法详细信息 |
---|
public boolean isMulticastAddress()
boolean
值
public boolean isAnyLocalAddress()
boolean
值
public boolean isLoopbackAddress()
boolean
值;否则返回 false。
public boolean isLinkLocalAddress()
boolean
值;如果地址不是链接本地单播地址,则返回 false。
public boolean isSiteLocalAddress()
boolean
值;如果地址不是站点本地单播地址,则返回 false。
public boolean isMCGlobal()
boolean
值;如果它不是全局域或多播地址,则返回 false
public boolean isMCNodeLocal()
boolean
值;如果它不是节点本地范围或多播地址,则返回 false
public boolean isMCLinkLocal()
boolean
值;如果它不是链接本地范围或多播地址,则返回 false
public boolean isMCSiteLocal()
boolean
;如果它不是站点本地范围或多播地址,则返回 false
public boolean isMCOrgLocal()
boolean
值;如果它不是组织本地范围或多播地址,则返回 false
public boolean isReachable(int timeout) throws IOException
超时值(以毫秒为单位)指示尝试应该使用的最大时间量。如果在获取应答前操作超时了,则视为主机不可到达。负值将导致抛出 IllegalArgumentException。
timeout
- 调用中止前的时间(以毫秒为单位)
boolean
值。
IOException
- 如果发生网络错误
IllegalArgumentException
- 如果
timeout
为负。
public boolean isReachable(NetworkInterface netif, int ttl, int timeout) throws IOException
network interface
和 ttl
参数允许调用方指定测试将遍历的网络接口和数据包将遍历的最大跳数。ttl
为负值将导致抛出 IllegalArgumentException。
超时值(以毫秒为单位)指示尝试应该使用的最大时间量。如果在获取应答前操作超时了,则视为主机不可到达。负值将导致抛出 IllegalArgumentException。
netif
- 将用于完成测试的 NetworkInterface;或者用于任何接口的 null
ttl
- 要尝试的最大跳数或默认值 0
timeout
- 调用中止前的时间(以毫秒为单位)
boolean
值。
IllegalArgumentException
- 如果
timeout
或
ttl
为负。
IOException
- 如果发生网络错误
public String getHostName()
如果此 InetAddress 是用主机名创建的,则记忆并返回主机名;否则,将执行反向名称查找并基于系统配置的名称查找服务返回结果。如果需要查找名称服务,则调用 getCanonicalHostName
。
如果有安全管理器,则首先使用主机名和 -1
作为参数来调用其 checkConnect
方法,以查看是否允许该操作。如果不允许该操作,则其返回 IP 地址的文本表示形式。
getCanonicalHostName()
,
SecurityManager.checkConnect(java.lang.String, int)
public String getCanonicalHostName()
如果有安全管理器,则此方法首先使用主机名和 -1
作为参数调用其 checkConnect
方法,来查看是否允许调用代码知道此 IP 地址的主机名(即是否允许连接到该主机)。如果不允许该操作,则其返回 IP 地址的文本表示形式。
SecurityManager.checkConnect(java.lang.String, int)
public byte[] getAddress()
InetAddress
对象的原始 IP 地址。结果按网络字节顺序:地址的高位字节位于
getAddress()[0]
中。
public String getHostAddress()
public int hashCode()
Object
中的
hashCode
Object.equals(java.lang.Object)
,
Hashtable
public boolean equals(Object obj)
null
,并且它表示与此对象相同的 IP 地址时,结果才为
true
。
如果 getAddress
对两个 InetAddress
返回的 byte 数组长度相同并且 byte 数组的每个数组元素也都相同,则这两个 InetAddress
的实例表示相同的 IP 地址。
Object
中的
equals
obj
- 要与之比较的对象。
true
;否则,返回
false
。
getAddress()
public String toString()
String
。返回的字符串具有以下形式:主机名/字面值 IP 地址。 如果主机名是未解析的,则不执行反向名称服务查找。主机名部分将由一个空字符串表示。
Object
中的
toString
public static InetAddress getByAddress(String host, byte[] addr) throws UnknownHostException
主机名可以是机器名(如 "java.sun.com
"),也可以是其 IP 地址的文本表示形式。
也不在主机名上执行有效性检查。
如果 addr 指定 IPv4 地址,则返回 Inet4Address 的实例;否则将返回 Inet6Address 的实例。
IPv4 地址 byte 数组的长度必须为 4 个字节,IPv6 byte 数组的长度必须为 16 个字节
host
- 指定主机
addr
- 网络字节顺序的原始 IP 地址
UnknownHostException
- 如果 IP 地址的长度非法
public static InetAddress getByName(String host) throws UnknownHostException
主机名可以是机器名(如 "java.sun.com
"),也可以是其 IP 地址的文本表示形式。如果提供字面值 IP 地址,则仅检查地址格式的有效性。
对于以字面值 IPv6 地址指定的 host
,在 RFC 2732 中定义的形式或在 RFC 2373 中定义的字面值 IPv6 地址格式都可以接受。IPv6 范围地址也受支持。有关 IPv6 范围地址的描述,请参见这里。
如果主机为 null,则返回表示回送接口地址的 InetAddress。请参阅 RFC 3330 的第 2 节和 RFC 2373 的第 2.5.3 节。
host
- 指定的主机,或
null
。
UnknownHostException
- 如果找不到
host
的 IP 地址,或者 scope_id 是为全局 IPv6 地址指定的。
SecurityException
- 如果安全管理器存在并且其 checkConnect 方法不允许进行该操作
public static InetAddress[] getAllByName(String host) throws UnknownHostException
主机名可以是机器名(如 "java.sun.com
"),也可以是其 IP 地址的文本表示形式。如果提供字面值 IP 地址,则仅检查地址格式的有效性。
对于以字面值 IPv6 地址 指定的 host
,在 RFC 2732 中定义的形式或在 RFC 2373 中定义的字面值 IPv6 地址格式都可以接受。字面值 IPv6 地址还可以通过追加范围时区标识符或 scope_id 来限定。scope_id 的语法和用法在这里描述。
如果主机为 null,则返回表示回送接口地址的 InetAddress。请参阅 RFC 3330 的第 2 节和 RFC 2373 的第 2.5.3 节。
如果有安全管理器,并且 host
非 null,host.length()
不等于零,则使用主机名和 -1
作为参数调用安全管理器的 checkConnect
方法,来查看是否允许该操作。
host
- 主机名,或
null
。
UnknownHostException
- 如果找不到
host
的 IP 地址,或者 scope_id 是为全局 IPv6 地址指定的。
SecurityException
- 如果安全管理器存在并且其
checkConnect
方法不允许进行该操作。
SecurityManager.checkConnect(java.lang.String, int)
public static InetAddress getByAddress(byte[] addr) throws UnknownHostException
InetAddress
对象。参数按网络字节顺序:地址的高位字节位于
getAddress()[0]
中。
此方法不会阻塞,即不执行任何反向名称服务查找操作。
IPv4 地址 byte 数组的长度必须为 4 个字节,IPv6 byte 数组的长度必须为 16 个字节
addr
- 网络字节顺序的原始 IP 地址
UnknownHostException
- 如果 IP 地址的长度非法
public static InetAddress getLocalHost() throws UnknownHostException
如果有安全管理器,则使用本地主机名和 -1
作为参数来调用其 checkConnect
方法,以查看是否允许该操作。如果不允许该操作,则返回表示回送地址的 InetAddress。
UnknownHostException
- 如果找不到
host
的任何 IP 地址。
SecurityManager.checkConnect(java.lang.String, int)
|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。