Класс 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 в заголовке IP также использовалось как поле области действия многоадресной рассылки: 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 | Модификатор и тип | Метод | Описание |
|---|---|---|
static InetAddress[] |
getAllByName |
По имени узла возвращает массив его IP-адресов, используя общесистемный резолвер. |
static InetAddress |
getByAddress |
Возвращает объект InetAddress по необработанному IP-адресу. |
static InetAddress |
getByAddress |
Создаёт InetAddress на основе предоставленных имени узла и IP-адреса. |
static InetAddress |
getByName |
Определяет IP-адрес узла по его имени. |
String |
getCanonicalHostName() |
|
String |
getHostName() |
Получает имя узла для этого IP-адреса. |
static InetAddress |
getLocalHost() |
Возвращает адрес локального узла. |
static InetAddress |
getLoopbackAddress() |
Возвращает адрес обратной петли. |
boolean |
isReachable |
Проверяет, доступен ли этот адрес. |
boolean |
isReachable |
Проверяет, доступен ли этот адрес. |
String |
toString() |
Преобразует этот IP-адрес в String. |
Методы, объявленные в классе Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать до пробуждения, обычно посредством уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать до пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного интервала реального времени. |
final void |
wait |
Заставляет текущий поток ожидать до пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного интервала реального времени. |
Подробное описание методов
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.