Most visited

Recently visited

Added in API level 1

InetAddress

public class InetAddress
extends Object implements Serializable

java.lang.Object
   ↳ java.net.InetAddress
Known Direct Subclasses


这个类表示一个Internet协议(IP)地址。

IP地址可以是IP所使用的32位或128位无符号数字,也可以是构建UDP和TCP等协议的较低级别的协议。 IP地址结构由定义RFC 790: Assigned NumbersRFC 1918: Address Allocation for Private InternetsRFC 2365: Administratively Scoped IP Multicast ,并RFC 2373: IP Version 6 Addressing Architecture InetAddress的一个实例由一个IP地址和可能的相应主机名组成(取决于它是用主机名构造还是已经完成反向主机名解析)。

Address types

unicast An identifier for a single interface. A packet sent to a unicast address is delivered to the interface identified by that address.

未指定地址 - 也称为匿名地址或通配符地址。 绝不能将它分配给任何节点。 它表示没有地址。 其使用的一个例子是作为绑定的目标,它允许服务器在任何接口上接受客户端连接,以防服务器主机有多个接口。

未指定的地址不能用作IP数据包的目标地址。

环回地址 - 这是分配给环回接口的地址。 发送到此IP地址的任何内容都会循环并成为本地主机上的IP输入。 测试客户端时经常使用此地址。

multicast An identifier for a set of interfaces (typically belonging to different nodes). A packet sent to a multicast address is delivered to all interfaces identified by that address.

IP address scope

链路本地地址被设计为用于在单个链路上进行寻址,以用于诸如自动地址配置,邻居发现或当没有路由器存在时。

站点本地地址被设计用于在站点内寻址而不需要全局前缀。

全球地址在互联网上是唯一的。

Textual representation of IP addresses

The textual representation of an IP address is address family specific.

IPv4地址格式请参考Inet4Address#format ; IPv6地址格式请参考Inet6Address#format

有一个 couple of System Properties影响如何使用IPv4和IPv6地址。

Host Name Resolution

Host name-to-IP address resolution is accomplished through the use of a combination of local machine configuration information and network naming services such as the Domain Name System (DNS) and Network Information Service(NIS). The particular naming services(s) being used is by default the local machine configured one. For any host name, its corresponding IP address is returned.

反向名称解析意味着对于任何IP地址,都会返回与该IP地址关联的主机。

InetAddress类提供了将主机名解析为其IP地址的方法,反之亦然。

InetAddress Caching

The InetAddress class has a cache to store successful as well as unsuccessful host name resolutions.

默认情况下,安装安全管理器时,为防止DNS欺骗攻击,正面主机名解析的结果将永久缓存。 如果未安装安全管理器,则缺省行为是缓存有限(实施相关)时间段的条目。 不成功的主机名解析的结果被缓存了很短的时间(10秒)以提高性能。

如果不需要默认行为,则可以将Java安全属性设置为正向缓存的不同生存时间(TTL)值。 同样,系统管理员可以在需要时配置不同的负缓存TTL值。

两个Java安全属性控制用于正面和负面主机名解析缓存的TTL值:

networkaddress.cache.ttl
Indicates the caching policy for successful name lookups from the name service. The value is specified as as integer to indicate the number of seconds to cache the successful lookup. The default setting is to cache for an implementation specific period of time.

值为-1表示“永远缓存”。

networkaddress.cache.negative.ttl (default: 10)
Indicates the caching policy for un-successful name lookups from the name service. The value is specified as as integer to indicate the number of seconds to cache the failure for un-successful lookups.

值为0表示“永不缓存”。 值为-1表示“永远缓存”。

也可以看看:

Summary

Public methods

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()

返回本地主机的地址。

static InetAddress getLoopbackAddress()

返回回送地址。

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

Inherited methods

From class java.lang.Object

Public methods

equals

Added in API level 1
boolean equals (Object obj)

将此对象与指定的对象进行比较。 当且仅当参数不是null且它表示与此对象相同的IP地址时,结果为true

的两个实例 InetAddress表示相同的IP地址,如果返回的字节数组的长度 getAddress对于两个是相同的,并且每个阵列组件的是用于字节数组相同的。

Parameters
obj Object: the object to compare against.
Returns
boolean true if the objects are the same; false otherwise.

也可以看看:

getAddress

Added in API level 1
byte[] getAddress ()

返回此InetAddress对象的原始IP地址。 结果是网络字节顺序:地址的最高位字节在getAddress()[0]

Returns
byte[] the raw IP address of this object.

getAllByName

Added in API level 1
InetAddress[] getAllByName (String host)

根据主机的名称,根据系统上配置的名称服务返回其IP地址的数组。

主机名称可以是机器名称,例如“ java.sun.com ”,也可以是其IP地址的文本表示。 如果提供文字IP地址,则只检查地址格式的有效性。

对于文字IPv6地址中指定的host ,接受RFC 2732中定义的格式或RFC 2373中定义的文字IPv6地址格式。 一个文字IPv6地址也可以通过追加一个范围区域标识符或scope_id来限定。 scope_ids的语法和用法如here所述。

如果主机是null,返回代表回送接口地址的InetAddress RFC 3330第2节和RFC 2373第2.5.3节。

如果存在安全管理器并且 host不为空且 host.length()不等于零,则使用主机名和 -1作为其参数来调用安全管理器的 checkConnect方法,以查看是否允许执行该操作。

Parameters
host String: the name of the host, or null.
Returns
InetAddress[] an array of all the IP addresses for a given host name.
Throws
UnknownHostException if no IP address for the host could be found, or if a scope_id was specified for a global IPv6 address.
SecurityException if a security manager exists and its checkConnect method doesn't allow the operation.

也可以看看:

getByAddress

Added in API level 1
InetAddress getByAddress (byte[] addr)

给定原始IP地址返回一个InetAddress对象。 参数采用网络字节顺序:地址的最高位字节为getAddress()[0]

此方法不会阻止,即不执行反向名称服务查找。

IPv4地址字节数组必须是4个字节长,IPv6字节数组必须是16个字节长

Parameters
addr byte: the raw IP address in network byte order
Returns
InetAddress an InetAddress object created from the raw IP address.
Throws
UnknownHostException if IP address is of illegal length

getByAddress

Added in API level 1
InetAddress getByAddress (String host, 
                byte[] addr)

根据提供的主机名和IP地址创建一个InetAddress。 没有名称服务检查地址的有效性。

主机名可以是机器名称,例如“ java.sun.com ”,也可以是其IP地址的文本表示。

主机名也不做有效性检查。

如果addr指定了IPv4地址,则将返回Inet4Address的实例; 否则,将返回Inet6Address的一个实例。

IPv4地址字节数组必须是4个字节长,IPv6字节数组必须是16个字节长

Parameters
host String: the specified host
addr byte: the raw IP address in network byte order
Returns
InetAddress an InetAddress object created from the raw IP address.
Throws
UnknownHostException if IP address is of illegal length

getByName

Added in API level 1
InetAddress getByName (String host)

根据主机名称确定主机的IP地址。

主机名称可以是机器名称,例如“ java.sun.com ”,也可以是其IP地址的文本表示。 如果提供文字IP地址,则只检查地址格式的有效性。

对于在文字IPv6地址中指定的host RFC 2732中定义的格式或RFC 2373中定义的文字IPv6地址格式。 IPv6范围的地址也被支持。 有关IPv6作用域地址的描述,请参阅here

如果主机是null,返回代表回送接口地址的InetAddress RFC 3330第2节和RFC 2373第2.5.3节。

Parameters
host String: the specified host, or null.
Returns
InetAddress an IP address for the given host name.
Throws
UnknownHostException if no IP address for the host could be found, or if a scope_id was specified for a global IPv6 address.
SecurityException if a security manager exists and its checkConnect method doesn't allow the operation

getCanonicalHostName

Added in API level 1
String getCanonicalHostName ()

获取此IP地址的完全限定的域名。 尽力而为的方法,这意味着我们可能无法返回FQDN,具体取决于底层的系统配置。

如果有安全管理器,则此方法首先使用主机名和-1作为参数调用其checkConnect方法,以查看是否允许调用代码知道此IP地址的主机名,即连接到主机。 如果操作不被允许,它将返回IP地址的文本表示。

Returns
String the fully qualified domain name for this IP address, or if the operation is not allowed by the security check, the textual representation of the IP address.

也可以看看:

getHostAddress

Added in API level 1
String getHostAddress ()

以文本显示形式返回IP地址字符串。

Returns
String the raw IP address in a string format.

getHostName

Added in API level 1
String getHostName ()

获取此IP地址的主机名。

如果此InetAddress是使用主机名创建的,则会记住此主机名并将其返回; 否则,将执行反向名称查找,并根据系统配置的名称查找服务返回结果。 如果需要查询名称服务,请致电getCanonicalHostName

如果有安全管理器,则首先使用主机名和-1作为其参数来调用其checkConnect方法,以查看操作是否被允许。 如果操作不被允许,它将返回IP地址的文本表示。

Returns
String the host name for this IP address, or if the operation is not allowed by the security check, the textual representation of the IP address.

也可以看看:

getLocalHost

Added in API level 1
InetAddress getLocalHost ()

返回本地主机的地址。 这是通过从系统中检索主机的名称,然后将该名称解析为InetAddress

注意:解析后的地址可能会在短时间内被缓存。

如果有安全管理器,则使用本地主机名称和-1作为其参数来调用其checkConnect方法,以查看是否允许执行该操作。 如果操作不被允许,则返回代表回送地址的InetAddress。

Returns
InetAddress the address of the local host.
Throws
UnknownHostException if the local host name could not be resolved into an address.

也可以看看:

getLoopbackAddress

Added in API level 19
InetAddress getLoopbackAddress ()

返回回送地址。

返回的InetAddress将表示IPv4环回地址127.0.0.1或IPv6环回地址:: 1。 返回的IPv4回送地址只是127。*。*。*格式中的许多

Returns
InetAddress the InetAddress loopback instance.

hashCode

Added in API level 1
int hashCode ()

返回此IP地址的哈希码。

Returns
int a hash code value for this IP address.

isAnyLocalAddress

Added in API level 1
boolean isAnyLocalAddress ()

用于检查通配符地址中的InetAddress的实用程序。

Returns
boolean a boolean indicating if the Inetaddress is a wildcard address.

isLinkLocalAddress

Added in API level 1
boolean isLinkLocalAddress ()

用于检查InetAddress是否为链接本地地址的实用程序。

Returns
boolean a boolean indicating if the InetAddress is a link local address; or false if address is not a link local unicast address.

isLoopbackAddress

Added in API level 1
boolean isLoopbackAddress ()

检查InetAddress是否为环回地址的实用程序。

Returns
boolean a boolean indicating if the InetAddress is a loopback address; or false otherwise.

isMCGlobal

Added in API level 1
boolean isMCGlobal ()

检查多播地址是否具有全局范围的实用程序。

Returns
boolean a boolean indicating if the address has is a multicast address of global scope, false if it is not of global scope or it is not a multicast address

isMCLinkLocal

Added in API level 1
boolean isMCLinkLocal ()

检查多播地址是否具有链接范围的实用程序。

Returns
boolean a boolean indicating if the address has is a multicast address of link-local scope, false if it is not of link-local scope or it is not a multicast address

isMCNodeLocal

Added in API level 1
boolean isMCNodeLocal ()

检查组播地址是否具有节点范围的实用程序。

Returns
boolean a boolean indicating if the address has is a multicast address of node-local scope, false if it is not of node-local scope or it is not a multicast address

isMCOrgLocal

Added in API level 1
boolean isMCOrgLocal ()

检查组播地址是否具有组织范围的实用程序。

Returns
boolean a boolean indicating if the address has is a multicast address of organization-local scope, false if it is not of organization-local scope or it is not a multicast address

isMCSiteLocal

Added in API level 1
boolean isMCSiteLocal ()

检查组播地址是否具有站点范围的实用程序。

Returns
boolean a boolean indicating if the address has is a multicast address of site-local scope, false if it is not of site-local scope or it is not a multicast address

isMulticastAddress

Added in API level 1
boolean isMulticastAddress ()

检查InetAddress是否为IP多播地址的实用程序。

Returns
boolean a boolean indicating if the InetAddress is an IP multicast address

isReachable

Added in API level 1
boolean isReachable (int timeout)

测试该地址是否可达。 尝试通过实现尝试访问主机,尽力而为,但防火墙和服务器配置可能会阻止导致无法访问状态的请求,同时可能访问某些特定的端口。 如果可以获得特权,典型的实现将使用ICMP ECHO REQUEST,否则它将尝试在目标主机的端口7(Echo)上建立TCP连接。

超时值(以毫秒为单位)表示尝试应采取的最大时间量。 如果操作在获得答案之前超时,主机将被视为无法访问。 负值将导致抛出IllegalArgumentException。

Parameters
timeout int: the time, in milliseconds, before the call aborts
Returns
boolean a boolean indicating if the address is reachable.
Throws
IOException if a network error occurs
IllegalArgumentException if timeout is negative.

isReachable

Added in API level 1
boolean isReachable (NetworkInterface netif, 
                int ttl, 
                int timeout)

测试该地址是否可达。 尝试通过实现尝试访问主机,尽力而为,但防火墙和服务器配置可能会阻止导致无法访问状态的请求,同时可能访问某些特定的端口。 如果可以获得特权,典型的实现将使用ICMP ECHO REQUEST,否则它将尝试在目标主机的端口7(Echo)上建立TCP连接。

参数network interfacettl让调用者指定测试将经过的网络接口以及数据包应经过的最大跳数。 ttl将导致抛出IllegalArgumentException。

超时值(以毫秒为单位)表示尝试应采取的最大时间量。 如果操作在获得答案之前超时,主机将被视为无法访问。 负值将导致抛出IllegalArgumentException。

Parameters
netif NetworkInterface: the NetworkInterface through which the test will be done, or null for any interface
ttl int: the maximum numbers of hops to try or 0 for the default
timeout int: the time, in milliseconds, before the call aborts
Returns
boolean a booleanindicating if the address is reachable.
Throws
IllegalArgumentException if either timeout or ttl are negative.
IOException if a network error occurs

isSiteLocalAddress

Added in API level 1
boolean isSiteLocalAddress ()

检查InetAddress是否为站点本地地址的实用程序。

Returns
boolean a boolean indicating if the InetAddress is a site local address; or false if address is not a site local unicast address.

toString

Added in API level 1
String toString ()

将此IP地址转换为String 返回的字符串格式为:主机名/文字IP地址。 如果主机名未解析,则不执行反向名称服务查找。 主机名部分将由空字符串表示。

Returns
String a string representation of this IP address.

Hooray!