java.lang.Object | |
↳ | java.net.InetAddress |
Known Direct Subclasses |
An Internet Protocol (IP) address. This can be either an IPv4 address or an IPv6 address, and
in practice you'll have an instance of either Inet4Address
or Inet6Address
(this
class cannot be instantiated directly). Most code does not need to distinguish between the two
families, and should use InetAddress
.
An InetAddress
may have a hostname (accessible via getHostName
), but may not,
depending on how the InetAddress
was created.
The getAllByName
method accepts IPv4 addresses in the "decimal-dotted-quad" form only:
"1.2.3.4"
- 1.2.3.4
The getAllByName
method accepts IPv6 addresses in the following forms (this text
comes from RFC 2373, which you should consult
for full details of IPv6 addressing):
The preferred form is x:x:x:x:x:x:x:x
, where the 'x's are the
hexadecimal values of the eight 16-bit pieces of the address.
Note that it is not necessary to write the leading zeros in an
individual field, but there must be at least one numeral in every
field (except for the case described in the next bullet).
Examples:
FEDC:BA98:7654:3210:FEDC:BA98:7654:3210 1080:0:0:0:8:800:200C:417A
1080:0:0:0:8:800:200C:417A a unicast address FF01:0:0:0:0:0:0:101 a multicast address 0:0:0:0:0:0:0:1 the loopback address 0:0:0:0:0:0:0:0 the unspecified addressesmay be represented as:
1080::8:800:200C:417A a unicast address FF01::101 a multicast address ::1 the loopback address :: the unspecified addresses
An alternative form that is sometimes more convenient when dealing
with a mixed environment of IPv4 and IPv6 nodes is
x:x:x:x:x:x:d.d.d.d
, where the 'x's are the hexadecimal values of
the six high-order 16-bit pieces of the address, and the 'd's are
the decimal values of the four low-order 8-bit pieces of the
address (standard IPv4 representation). Examples:
0:0:0:0:0:0:13.1.68.3 0:0:0:0:0:FFFF:129.144.52.38or in compressed form:
::13.1.68.3 ::FFFF:129.144.52.38
Scopes are given using a trailing %
followed by the scope id, as in
1080::8:800:200C:417A%2
or 1080::8:800:200C:417A%en0
.
See RFC 4007 for more on IPv6's scoped
address architecture.
Additionally, for backwards compatibility, IPv6 addresses may be surrounded by square brackets.
On Android, addresses are cached for 600 seconds (10 minutes) by default. Failed lookups are
cached for 10 seconds. The underlying C library or OS may cache for longer, but you can control
the Java-level caching with the usual "networkaddress.cache.ttl"
and
"networkaddress.cache.negative.ttl"
system properties. These are parsed as integer
numbers of seconds, where the special value 0 means "don't cache" and -1 means "cache forever".
Note also that on Android – unlike the RI – the cache is not unbounded. The current implementation caches around 512 entries, removed on a least-recently-used basis. (Obviously, you should not rely on these details.)
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Compares this
InetAddress instance against the specified address
in obj . | |||||||||||
Returns the IP address represented by this
InetAddress instance
as a byte array. | |||||||||||
Gets all IP addresses associated with the given
host identified
by name or literal IP address. | |||||||||||
Equivalent to
getByAddress(null, ipAddress) . | |||||||||||
Returns an
InetAddress corresponding to the given network-order
bytes ipAddress and scopeId . | |||||||||||
Returns the address of a host according to the given host string name
host . | |||||||||||
Returns the fully qualified hostname corresponding to this IP address.
| |||||||||||
Returns the numeric representation of this IP address (such as "127.0.0.1").
| |||||||||||
Returns the host name corresponding to this IP address.
| |||||||||||
Returns an
InetAddress for the local host if possible, or the
loopback address otherwise. | |||||||||||
Gets the hashcode of the represented IP address.
| |||||||||||
Returns whether this is the IPv6 unspecified wildcard address
::
or the IPv4 "any" address, 0.0.0.0 . | |||||||||||
Returns whether this address is a link-local address or not.
| |||||||||||
Returns whether this address is a loopback address or not.
| |||||||||||
Returns whether this address is a global multicast address or not.
| |||||||||||
Returns whether this address is a link-local multicast address or not.
| |||||||||||
Returns whether this address is a node-local multicast address or not.
| |||||||||||
Returns whether this address is a organization-local multicast address or not.
| |||||||||||
Returns whether this address is a site-local multicast address or not.
| |||||||||||
Returns whether this address is a multicast address or not.
| |||||||||||
Tries to reach this
InetAddress . | |||||||||||
Tries to reach this
InetAddress . | |||||||||||
Returns whether this address is a site-local address or not.
| |||||||||||
Returns a string containing a concise, human-readable description of this
IP address.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.Object
|
Compares this InetAddress
instance against the specified address
in obj
. Two addresses are equal if their address byte arrays have
the same length and if the bytes in the arrays are equal.
obj | the object to be tested for equality. |
---|
true
if both objects are equal, false
otherwise.
Returns the IP address represented by this InetAddress
instance
as a byte array. The elements are in network order (the highest order
address byte is in the zeroth element).
Gets all IP addresses associated with the given host
identified
by name or literal IP address. The IP address is resolved by the
configured name service. If the host name is empty or null
an
UnknownHostException
is thrown. If the host name is a literal IP
address string an array with the corresponding single InetAddress
is returned.
host | the hostname or literal IP string to be resolved. |
---|
UnknownHostException | if the address lookup fails. |
---|
Equivalent to getByAddress(null, ipAddress)
. Handy for addresses with
no associated hostname.
UnknownHostException |
---|
Returns an InetAddress
corresponding to the given network-order
bytes ipAddress
and scopeId
.
For an IPv4 address, the byte array must be of length 4.
For IPv6, the byte array must be of length 16. Any other length will cause an UnknownHostException
.
No reverse lookup is performed. The given hostName
(which may be null) is
associated with the new InetAddress
with no validation done.
(Note that numeric addresses such as "127.0.0.1"
are names for the
purposes of this API. Most callers probably want getAllByName(String)
instead.)
UnknownHostException | if ipAddress is null or the wrong length.
|
---|
Returns the address of a host according to the given host string name
host
. The host string may be either a machine name or a dotted
string IP address. If the latter, the hostName
field is
determined upon demand. host
can be null
which means that
an address of the loopback interface is returned.
host | the hostName to be resolved to an address or null . |
---|
InetAddress
instance representing the host.UnknownHostException | if the address lookup fails. |
---|
Returns the fully qualified hostname corresponding to this IP address.
Returns the numeric representation of this IP address (such as "127.0.0.1").
Returns the host name corresponding to this IP address. This may or may not be a
fully-qualified name. If the IP address could not be resolved, the numeric representation
is returned instead (see getHostAddress()
).
Returns an InetAddress
for the local host if possible, or the
loopback address otherwise. This method works by getting the hostname,
performing a DNS lookup, and then taking the first returned address.
For devices with multiple network interfaces and/or multiple addresses
per interface, this does not necessarily return the InetAddress
you want.
Multiple interface/address configurations were relatively rare when this API was designed, but multiple interfaces are the default for modern mobile devices (with separate wifi and radio interfaces), and the need to support both IPv4 and IPv6 has made multiple addresses commonplace. New code should thus avoid this method except where it's basically being used to get a loopback address or equivalent.
There are two main ways to get a more specific answer:
getLocalAddress()
instead: that will give you the address
that's actually in use for that connection. (It's not possible to ask
the question "what local address would a connection to a given remote
address use?"; you have to actually make the connection and see.)NetworkInterface
, which lets you
enumerate all available network interfaces and their addresses.Note that if the host doesn't have a hostname set – as
Android devices typically don't – this method will
effectively return the loopback address, albeit by getting the name
localhost
and then doing a lookup to translate that to
127.0.0.1
.
InetAddress
representing the local host, or the
loopback address.UnknownHostException | if the address lookup fails. |
---|
Gets the hashcode of the represented IP address.
Returns whether this is the IPv6 unspecified wildcard address ::
or the IPv4 "any" address, 0.0.0.0
.
Returns whether this address is a link-local address or not.
Valid IPv6 link-local addresses have the prefix fe80::/10
.
RFC 3484
"Default Address Selection for Internet Protocol Version 6 (IPv6)" states
that both IPv4 auto-configuration addresses (prefix 169.254/16
) and
IPv4 loopback addresses (prefix 127/8
) have link-local scope, but
Inet4Address
only considers the auto-configuration addresses
to have link-local scope. That is: the IPv4 loopback address returns false.
Returns whether this address is a loopback address or not.
Valid IPv4 loopback addresses have the prefix 127/8
.
The only valid IPv6 loopback address is ::1
.
Returns whether this address is a global multicast address or not.
Valid IPv6 global multicast addresses have the prefix ffxe::/16
,
where x
is a set of flags and the additional 112 bits make
up the global multicast address space.
Valid IPv4 global multicast addresses are the range of addresses
from 224.0.1.0
to 238.255.255.255
.
Returns whether this address is a link-local multicast address or not.
Valid IPv6 link-local multicast addresses have the prefix ffx2::/16
,
where x is a set of flags and the additional 112 bits make up the link-local multicast
address space.
Valid IPv4 link-local multicast addresses have the prefix 224.0.0/24
.
Returns whether this address is a node-local multicast address or not.
Valid IPv6 node-local multicast addresses have the prefix ffx1::/16
,
where x is a set of flags and the additional 112 bits make up the link-local multicast
address space.
There are no valid IPv4 node-local multicast addresses.
Returns whether this address is a organization-local multicast address or not.
Valid IPv6 organization-local multicast addresses have the prefix ffx8::/16
,
where x is a set of flags and the additional 112 bits make up the link-local multicast
address space.
Valid IPv4 organization-local multicast addresses have the prefix 239.192/14
.
Returns whether this address is a site-local multicast address or not.
Valid IPv6 site-local multicast addresses have the prefix ffx5::/16
,
where x is a set of flags and the additional 112 bits make up the link-local multicast
address space.
Valid IPv4 site-local multicast addresses have the prefix 239.255/16
.
Returns whether this address is a multicast address or not.
Valid IPv6 multicast addresses have the prefix ff::/8
.
Valid IPv4 multicast addresses have the prefix 224/4
.
Tries to reach this InetAddress
. This method first tries to use
ICMP (ICMP ECHO REQUEST), falling back to a TCP connection
on port 7 (Echo) of the remote host.
timeout | timeout in milliseconds before the test fails if no connection could be established. |
---|
true
if this address is reachable, false
otherwise.IOException | if an error occurs during an I/O operation. |
---|---|
IllegalArgumentException | if timeout is less than zero. |
Tries to reach this InetAddress
. This method first tries to use
ICMP (ICMP ECHO REQUEST), falling back to a TCP connection
on port 7 (Echo) of the remote host.
networkInterface | the network interface on which to connection should be established. |
---|---|
ttl | the maximum count of hops (time-to-live). |
timeout | timeout in milliseconds before the test fails if no connection could be established. |
true
if this address is reachable, false
otherwise.IOException | if an error occurs during an I/O operation. |
---|---|
IllegalArgumentException | if ttl or timeout is less than zero. |
Returns whether this address is a site-local address or not.
For the purposes of this method, valid IPv6 site-local addresses have
the deprecated prefix fec0::/10
from
RFC 1884,
not the modern prefix fc00::/7
from
RFC 4193.
RFC 3484
"Default Address Selection for Internet Protocol Version 6 (IPv6)" states
that IPv4 private addresses have the prefix 10/8
, 172.16/12
,
or 192.168/16
.
true
if this instance represents a site-local address,
false
otherwise.
Returns a string containing a concise, human-readable description of this IP address.