Spec-Zone.ru › OpenJDK 24

Класс Inet4Address

java.lang.Object
java.net.InetAddress
java.net.Inet4Address
Все реализованные интерфейсы:
Serializable
public final class Inet4Address extends InetAddress
Этот класс представляет собой адрес Интернет-протокола версии 4 (IPv4). Определяется RFC 790: Присвоенные номера, RFC 1918: Распределение адресов для частных сетей и RFC 2365: Администрируемые IP-мультиадресные адреса

Текстовое представление адресов IPv4

Текстовое представление адреса IPv4, используемого в качестве входных данных для методов, имеет один из следующих форматов:
  • d.d.d.d
  • d.d.d
  • d.d
  • d

Если указаны четыре части, каждая из них интерпретируется как байт данных и присваивается, слева направо, четырём байтам адреса IPv4.

Если указан адрес из трёх частей, последняя часть интерпретируется как 16-битное значение и помещается в два правых байта сетевого адреса. Это делает формат адреса из трёх частей удобным для задания адресов сетей класса B, например, 128.net.host.

Если указан адрес из двух частей, последняя часть интерпретируется как 24-битное значение и помещается в три правых байта сетевого адреса. Это делает формат адреса из двух частей удобным для задания адресов сетей класса А, например, 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
Внешние спецификации
  • RFC 1918: Распределение адресов для частных сетей
  • RFC 2365: Администрируемые IP-мультиадресные адреса
  • RFC 790: Присвоенные номера
  • RFC 6943: Проблемы сравнения идентификаторов в целях безопасности
См. также:
  • Сериализованная форма

Краткое описание методов

Модификатор и тип Метод Описание
boolean equals(Object obj)
Сравнивает этот объект с указанным объектом.
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(String ipv4AddressLiteral)
Создает Inet4Address на основе предоставленного текстового представления адреса IPv4.
static Inet4Address ofPosixLiteral(String posixIPAddressLiteral)
Создает Inet4Address на основе предоставленного текстового представления адреса IPv4 в POSIX inet_addr совместимом формате.

Методы, объявленные в классе java.net.InetAddress

getAllByName, getByAddress, getByAddress, getByName, getCanonicalHostName, getHostName, getLocalHost, getLoopbackAddress, isReachable, isReachable, toString

Методы, объявленные в классе java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, 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(java.lang.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()
Вспомогательная функция для проверки, является ли InetAddress IP-адресом многоадресной рассылки. IP-адрес многоадресной рассылки — это адрес класса D, то есть первые четыре бита адреса равны 1110.
Переопределяет:
isMulticastAddress в классе InetAddress
Возвращает:
boolean, указывающий, является ли InetAddress IP-адресом многоадресной рассылки

isAnyLocalAddress

public boolean isAnyLocalAddress()
Вспомогательная функция для проверки, является ли InetAddress адресом подстановки.
Переопределяет:
isAnyLocalAddress в классе InetAddress
Возвращает:
boolean, указывающий, является ли InetAddress адресом подстановки.

isLoopbackAddress

public boolean isLoopbackAddress()
Вспомогательная функция для проверки, является ли InetAddress адресом обратной связи.
Переопределяет:
isLoopbackAddress в классе InetAddress
Возвращает:
boolean, указывающий, является ли InetAddress адресом обратной связи; или false в противном случае.

isLinkLocalAddress

public boolean isLinkLocalAddress()
Вспомогательная функция для проверки, является ли InetAddress локальным адресом канала связи.
Переопределяет:
isLinkLocalAddress в классе InetAddress
Возвращает:
boolean, указывающий, является ли InetAddress локальным адресом канала связи; или false, если адрес не является локальным одноадресным адресом канала связи.

isSiteLocalAddress

public boolean isSiteLocalAddress()
Вспомогательная функция для проверки, является ли InetAddress локальным адресом сайта.
Переопределяет:
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()
Возвращает необработанный IP-адрес этого объекта InetAddress. Результат находится в сетевом порядке байтов: старший байт адреса находится в getAddress()[0].
Переопределяет:
getAddress в классе InetAddress
Возвращает:
необработанный IP-адрес этого объекта.

getHostAddress

public String getHostAddress()
Возвращает строку IP-адреса в текстовом представлении.
Переопределяет:
getHostAddress в классе InetAddress
Возвращает:
необработанный IP-адрес в строковом формате.

hashCode

public int hashCode()
Возвращает хэш-код для этого IP-адреса.
Переопределяет:
hashCode в классе InetAddress
Возвращает:
значение хэш-кода для этого IP-адреса.
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

equals

public boolean equals(Object obj)
Сравнивает этот объект с указанным объектом. Результат равен true тогда и только тогда, когда аргумент не является null и представляет тот же IP-адрес, что и этот объект.

Два экземпляра InetAddress представляют один и тот же IP-адрес, если длина массивов байтов, возвращаемых getAddress, одинакова для обоих, и каждый из компонентов массива одинаков для массивов байтов.

Переопределяет:
equals в классе InetAddress
Параметры:
obj - объект для сравнения.
Возвращает:
true, если объекты одинаковы; false в противном случае.
См. также:
  • InetAddress.getAddress()

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/net/Inet4Address.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API