Класс Inet4Address
- Все реализуемые интерфейсы:
Serializable
public final class Inet4Address extends InetAddress
Текстовое представление IPv4-адресов
Текстовое представление IPv4-адреса, используемое в качестве входных данных методов, принимает одну из следующих форм:
d.d.d.dd.d.dd.dd
Если указаны четыре части, каждая интерпретируется как байт данных и назначается, слева направо, одному из четырёх байтов IPv4-адреса.
Если указан адрес из трёх частей, последняя часть интерпретируется как 16-битовое значение и помещается в два младших байта сетевого адреса. Благодаря этому формат адреса из трёх частей удобен для указания сетевых адресов класса B в виде 128.net.host.
Если указан адрес из двух частей, последняя часть интерпретируется как 24-битовое значение и помещается в три младших байта сетевого адреса. Благодаря этому формат адреса из двух частей удобен для указания сетевых адресов класса A в виде net.host.
Если указана только одна часть, значение сохраняется непосредственно в сетевом адресе без перестановки байтов.
Например, методами ofLiteral(String) и InetAddress.getByName(String), которые умеют разбирать текстовые представления IPv4-адресов, поддерживаются следующие формы записи (в десятичном формате):
// Dotted-decimal 'd.d.d.d' form with four part address literal
InetAddress.getByName("007.008.009.010"); // ==> /7.8.9.10
InetAddress.getByName("127.0.1.1"); // ==> /127.0.1.1
// Dotted-decimal 'd.d.d' form with three part address literal,
// the last part is placed in the right most two bytes
// of the constructed address
InetAddress.getByName("127.0.257"); // ==> /127.0.1.1
// Dotted-decimal 'd.d' form with two part address literal,
// the last part is placed in the right most three bytes
// of the constructed address
Inet4Address.ofLiteral("127.257"); // ==> /127.0.1.1
// 'd' form with one decimal value that is stored directly in
// the constructed address bytes without any rearrangement
Inet4Address.ofLiteral("02130706689"); // ==> /127.0.1.1
Приведённые выше формы соответствуют «строгому» синтаксису, допускающему только десятичную запись. Кроме того, метод ofPosixLiteral(String) реализует совместимый с POSIX inet_addr алгоритм «нестрогого» разбора, допускающий восьмеричные и шестнадцатеричные сегменты адреса. См. RFC 6943: Проблемы сравнения идентификаторов в целях безопасности. За исключением Inet4Address.ofPosixLiteral(String), все методы поддерживают только строгий десятичный разбор.
В методах, возвращающих текстовое представление в качестве выходного значения, используется первая форма — строка из четырёх чисел, разделённых точками, в строгой десятичной записи.
Область действия адреса многоадресной рассылки
Исторически поле TTL в заголовке IPv4 использовалось также как поле области действия многоадресной рассылки: TTL, равный 0, означает локальный узел, 1 — локальный канал, до 32 — локальный сегмент сети, до 64 — локальный регион, до 128 — локальный континент, а до 255 — глобальную область действия. Однако предпочтительнее административное ограничение области действия. См. RFC 2365: Многоадресная рассылка IP с административной областью действия- Начиная с:
- 1.4
- Внешние спецификации
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Сравнивает этот объект с указанным объектом. |
byte[] |
getAddress() |
Возвращает исходный IP-адрес этого объекта InetAddress. |
String |
getHostAddress() |
Возвращает строку IP-адреса в текстовом представлении. |
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 |
isSiteLocalAddress() |
Вспомогательный метод для проверки, является ли InetAddress адресом локального сегмента сети. |
static Inet4Address |
ofLiteral |
Создаёт Inet4Address на основе предоставленного текстового представления IPv4-адреса. |
static Inet4Address |
ofPosixLiteral |
Создаёт Inet4Address на основе предоставленного текстового представления IPv4-адреса в формате, совместимом с POSIX inet_addr. |
Методы, объявленные в классе InetAddress
getAllByName, getByAddress, getByAddress, getByName, getCanonicalHostName, getHostName, getLocalHost, getLoopbackAddress, isReachable, isReachable, toString
Подробное описание методов
ofLiteral
public static Inet4Address ofLiteral(String ipv4AddressLiteral)
Inet4Address на основе предоставленного текстового представления IPv4-адреса. Если предоставленный литерал IPv4-адреса не может представлять собой допустимый IPv4-адрес, выбрасывается IllegalArgumentException.
Этот метод не блокирует выполнение, то есть обратный поиск не выполняется.
- Параметры:
-
ipv4AddressLiteral— текстовое представление IPv4-адреса. - Возвращает:
- объект
Inet4Addressбез заданного имени хоста, созданный на основе предоставленного литерала IPv4-адреса. - Выбрасывает:
-
IllegalArgumentException— еслиipv4AddressLiteralне удаётся разобрать как литерал IPv4-адреса. -
NullPointerException— еслиipv4AddressLiteralимеет значениеnull. - Начиная с:
- 22
ofPosixLiteral
public static Inet4Address ofPosixLiteral(String posixIPAddressLiteral)
Inet4Address на основе предоставленного текстового представления IPv4-адреса в формате, совместимом с POSIX inet_addr. Метод ofPosixLiteral реализует алгоритм разбора, совместимый с POSIX inet_addr, который допускает восьмеричные и шестнадцатеричные сегменты адреса. "0" — префикс восьмеричных чисел, "0x" и "0X" — префиксы шестнадцатеричных чисел. Ненулевые сегменты адреса, начинающиеся с ненулевых цифр, разбираются как десятичные числа. Этот метод поддерживает следующие формы (не в десятичной записи):
// Dotted-quad 'x.x.x.x' form with four part address literal
Inet4Address.ofPosixLiteral("0177.0.0.1"); // ==> /127.0.0.1
Inet4Address.ofPosixLiteral("0x7F.0.0.1"); // ==> /127.0.0.1
// Dotted-triple 'x.x.x' form with three part address literal,
// the last part is placed in the rightmost two bytes
// of the constructed address
Inet4Address.ofPosixLiteral("0177.0.0402"); // ==> /127.0.1.2
Inet4Address.ofPosixLiteral("0x7F.0.0x102"); // ==> /127.0.1.2
// Dotted-double 'x.x' form with two part address literal,
// the last part is placed in the rightmost three bytes
// of the constructed address
Inet4Address.ofPosixLiteral("0177.0201003"); // ==> /127.1.2.3
Inet4Address.ofPosixLiteral("0x7F.0x10203"); // ==> /127.1.2.3
Inet4Address.ofPosixLiteral("127.66051"); // ==> /127.1.2.3
// Dotless 'x' form with one value that is stored directly in
// the constructed address bytes without any rearrangement
Inet4Address.ofPosixLiteral("0100401404"); // ==> /1.2.3.4
Inet4Address.ofPosixLiteral("0x1020304"); // ==> /1.2.3.4
Inet4Address.ofPosixLiteral("16909060"); // ==> /1.2.3.4
Если предоставленный литерал IPv4-адреса не может представлять собой допустимый IPv4-адрес в формате POSIX, выбрасывается IllegalArgumentException.
Этот метод не блокирует выполнение, то есть поиск имени хоста не выполняется.
- Примечание к API:
- Этот метод может возвращать результаты, отличающиеся от результатов ofLiteral(String), если параметр
posixIPAddressLiteralсодержит сегменты адреса с ведущими нулями. Сегмент адреса с ведущим нулём всегда разбирается этим методом как восьмеричное число, поэтому0255(восьмеричное) будет разобрано как173(десятичное). В то же времяInet4Address.ofLiteralигнорирует ведущие нули, разбирает все числа как десятичные и возвращает255. Если этот метод разберёт0256.0256.0256.0256(восьмеричное) и вернёт174.174.174.174(десятичное) в формате четырёх чисел, разделённых точками, тоInet4Address.ofLiteralвыброситIllegalArgumentException. - Параметры:
-
posixIPAddressLiteral— текстовое представление IPv4-адреса. - Возвращает:
- объект
Inet4Addressбез заданного имени хоста, созданный на основе предоставленного литерала IPv4-адреса. - Выбрасывает:
-
IllegalArgumentException— еслиposixIPAddressLiteralне удаётся разобрать как литерал IPv4-адреса. -
NullPointerException— еслиposixIPAddressLiteralимеет значениеnull. - Начиная с:
- 23
isMulticastAddress
public boolean isMulticastAddress()
- Переопределяет:
-
isMulticastAddressв классеInetAddress - Возвращает:
- значение
boolean, указывающее, является ли InetAddress адресом IP-многоадресной рассылки
isAnyLocalAddress
public boolean isAnyLocalAddress()
- Переопределяет:
-
isAnyLocalAddressв классеInetAddress - Возвращает:
- значение
boolean, указывающее, является ли InetAddress адресом-шаблоном.
isLoopbackAddress
public boolean isLoopbackAddress()
- Переопределяет:
-
isLoopbackAddressв классеInetAddress - Возвращает:
- значение
boolean, указывающее, является ли InetAddress адресом обратной петли; в противном случае — false.
isLinkLocalAddress
public boolean isLinkLocalAddress()
- Переопределяет:
-
isLinkLocalAddressв классеInetAddress - Возвращает:
- значение
boolean, указывающее, является ли InetAddress адресом локального канала; или false, если адрес не является одноадресным адресом локального канала.
isSiteLocalAddress
public boolean isSiteLocalAddress()
- Переопределяет:
-
isSiteLocalAddressв классеInetAddress - Возвращает:
- значение
boolean, указывающее, является ли InetAddress адресом локального сегмента сети; или false, если адрес не является одноадресным адресом локального сегмента сети.
isMCGlobal
public boolean isMCGlobal()
- Переопределяет:
-
isMCGlobalв классеInetAddress - Возвращает:
- значение
boolean, указывающее, является ли адрес адресом многоадресной рассылки с глобальной областью действия; false, если область действия не глобальная или это не адрес многоадресной рассылки
isMCNodeLocal
public boolean isMCNodeLocal()
- Переопределяет:
-
isMCNodeLocalв классеInetAddress - Возвращает:
- значение
boolean, указывающее, является ли адрес адресом многоадресной рассылки с областью действия локального узла; false, если область действия не ограничена локальным узлом или это не адрес многоадресной рассылки
isMCLinkLocal
public boolean isMCLinkLocal()
- Переопределяет:
-
isMCLinkLocalв классеInetAddress - Возвращает:
- значение
boolean, указывающее, является ли адрес адресом многоадресной рассылки с областью действия локального канала; false, если область действия не ограничена локальным каналом или это не адрес многоадресной рассылки
isMCSiteLocal
public boolean isMCSiteLocal()
- Переопределяет:
-
isMCSiteLocalв классеInetAddress - Возвращает:
- значение
boolean, указывающее, является ли адрес адресом многоадресной рассылки с областью действия локального сегмента сети; false, если область действия не ограничена локальным сегментом сети или это не адрес многоадресной рассылки
isMCOrgLocal
public boolean isMCOrgLocal()
- Переопределяет:
-
isMCOrgLocalв классеInetAddress - Возвращает:
- значение
boolean, указывающее, является ли адрес адресом многоадресной рассылки с областью действия организации; false, если область действия не ограничена организацией или это не адрес многоадресной рассылки
getAddress
public byte[] getAddress()
InetAddress. Результат представлен в сетевом порядке байтов: старший байт адреса находится в getAddress()[0].- Переопределяет:
-
getAddressв классеInetAddress - Возвращает:
- исходный IP-адрес этого объекта.
getHostAddress
public String getHostAddress()
- Переопределяет:
-
getHostAddressв классеInetAddress - Возвращает:
- исходный IP-адрес в виде строки.
hashCode
public int hashCode()
- Переопределяет:
-
hashCodeв классеInetAddress - Возвращает:
- значение хеш-кода этого IP-адреса.
- См. также:
equals
public boolean equals(Object obj)
true тогда и только тогда, когда аргумент не равен null и представляет тот же IP-адрес, что и этот объект. Два экземпляра InetAddress представляют один и тот же IP-адрес, если длина массивов байтов, возвращаемых getAddress, одинакова для обоих экземпляров и все соответствующие элементы массивов байтов совпадают.
- Переопределяет:
-
equalsв классеInetAddress - Параметры:
-
obj— объект для сравнения. - Возвращает:
-
true, если объекты одинаковы; в противном случае —false. - См. также:
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/Inet4Address.html