Spec-Zone.ru › OpenJDK 24

Класс InetAddress

java.lang.Object
java.net.InetAddress
Все реализованные интерфейсы:
Serializable
Непосредственные известные подклассы:
Inet4Address, Inet6Address
public sealed class InetAddress extends Object implements Serializable permits Inet4Address, Inet6Address
Этот класс представляет собой адрес Интернет-протокола (IP).

Адрес IP — это 32- или 128-битовое беззнаковое число, используемое протоколом IP, протоколом более низкого уровня, на котором строятся протоколы, такие как UDP и TCP. Архитектура адресов IP определена в RFC 790: Присвоенные номера, RFC 1918: Распределение адресов для частных сетей, RFC 2365: Администрируемый IP-мультиадрес и RFC 2373: Архитектура адресации IP версии 6. Экземпляр InetAddress состоит из IP-адреса и, возможно, соответствующего имени хоста (в зависимости от того, был ли он создан с именем хоста или уже выполнено обратное преобразование имени хоста в IP-адрес).

Типы адресов

Описание типов адресов одноадресной и многоадресной рассылки
Тип адреса Описание
одноадресная рассылка Идентификатор для одного интерфейса. Пакет, отправленный по одноадресному адресу, доставляется на интерфейс, идентифицированный этим адресом.

Неопределенный адрес — также называется любым локальным или универсальным адресом. Он никогда не должен назначаться ни одному узлу. Он указывает отсутствие адреса. Одним из примеров его использования является цель bind, что позволяет серверу принимать подключение клиента на любом интерфейсе, если у сервера есть несколько интерфейсов.

Неопределенный адрес не должен использоваться в качестве адреса назначения IP-пакета.

Адреса петли обратной связи — это адрес, назначенный интерфейсу петли обратной связи. Всё, что отправлено по этому IP-адресу, циклически обрабатывается и становится входными данными IP на локальном хосте. Этот адрес часто используется при тестировании клиента.

многоадресная рассылка Идентификатор набора интерфейсов (как правило, принадлежащих разным узлам). Пакет, отправленный по многоадресному адресу, доставляется на все интерфейсы, идентифицированные этим адресом.

Область действия IP-адреса

Адреса локальной связи предназначены для использования в адресации на одном канале связи, например, для автоматической конфигурации адреса, обнаружения соседей или при отсутствии маршрутизаторов.

Адреса локальной сети предназначены для использования в адресации внутри сети без необходимости глобального префикса.

Глобальные адреса уникальны в интернете.

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

Текстовое представление IP-адреса зависит от семейства адресов.

Для формата IPv4-адреса, пожалуйста, обратитесь к поддерживаемым текстовым представлениям IPv4-адреса; для формата IPv6-адреса, пожалуйста, обратитесь к поддерживаемым текстовым представлениям IPv6-адреса.

Существует несколько системных свойств, влияющих на использование адресов IPv4 и IPv6.

Разрешение имени хоста

Класс InetAddress предоставляет методы для разрешения имен хостов в их IP-адреса и наоборот. Фактическое разрешение делегируется разрешителю InetAddress.

Разрешение имени хоста в IP-адрес отображает имя хоста в IP-адрес. Для любого имени хоста возвращается соответствующий IP-адрес.

Обратное разрешение имени означает, что для любого IP-адреса возвращается связанный с ним хост.

Встроенная реализация разрешителя InetAddress выполняет разрешение имени хоста в IP-адрес и наоборот с помощью комбинации информации о конфигурации локальной машины и сетевых служб именования, таких как система доменных имён (DNS) и протокол лёгкого доступа к каталогам (LDAP). Конкретные службы именования, используемые встроенным разрешителем по умолчанию, зависят от конфигурации локальной машины.

InetAddress имеет механизм поставщика услуг для разрешителей InetAddress, который позволяет использовать вместо встроенной реализации пользовательского разрешителя InetAddress. InetAddressResolverProvider — это класс поставщика услуг. Его документация API содержит все подробности об этом механизме.

Кэширование InetAddress

Класс InetAddress имеет кэш для хранения успешных и неуспешных разрешений имен хостов.

По умолчанию записи кэшируются на конечный (зависящий от реализации) период времени. Результат неудачного разрешения имени хоста кэшируется на очень короткий период (10 секунд) для повышения производительности.

Если поведение по умолчанию нежелательно, можно установить свойство безопасности Java на другое значение TTL (Time-to-live) для положительного кэширования. Аналогично, системный администратор может настроить другое значение TTL для кэширования отрицательных результатов при необходимости или продлить использование устаревших данных.

Три свойства безопасности Java контролируют значения TTL, используемые для кэширования положительных и отрицательных разрешений имен хостов:

networkaddress.cache.ttl
Указывает политику кэширования для успешных запросов имен от службы именования. Значение задаётся целым числом, обозначающим количество секунд для кэширования успешного запроса. Значение по умолчанию — кэширование на период времени, зависящий от реализации.

Значение -1 означает «кэшировать навсегда».

networkaddress.cache.stale.ttl
Указывает политику кэширования устаревших имён. Значение задаётся целым числом, обозначающим количество секунд, в течение которых устаревшие имена будут храниться в кэше. Имя считается устаревшим, если TTL истек, и попытка повторного поиска имени хоста не увенчалась успехом. Это свойство полезно, если предпочтительнее использовать устаревшее имя, чем потерпеть неудачу из-за неуспешного поиска. Значение по умолчанию — кэширование на период времени, зависящий от реализации.

Если значение этого свойства больше, чем «networkaddress.cache.ttl», то «networkaddress.cache.ttl» будет использоваться в качестве интервала обновления имени в кэше. Например, если это свойство установлено на 1 день, а «networkaddress.cache.ttl» на 30 секунд, то положительный ответ будет кэшироваться на 1 день, но попытка его обновления будет производиться каждые 30 секунд.

Значение 0 (ноль) или отсутствие свойства означает, что устаревшие имена не используются. Отрицательные значения игнорируются.

networkaddress.cache.negative.ttl (по умолчанию: 10)
Указывает политику кэширования неудачных запросов имен от службы именования. Значение задаётся целым числом, обозначающим количество секунд для кэширования неудачи для неуспешных запросов.

Значение 0 означает «никогда не кэшировать». Значение -1 означает «кэшировать навсегда».

Диаграмма иерархии класса Sealed:
Sealed class hierarchy graph for InetAddressSealed class hierarchy graph for InetAddress
С момента:
1.0
Внешние спецификации
  • RFC 1918: Распределение адресов для частных сетей
  • RFC 2365: Администрируемый IP-мультиадрес
  • RFC 2373: Архитектура адресации IP версии 6
  • RFC 790: Присвоенные номера
См. также:
  • getByAddress(byte[])
  • getByAddress(java.lang.String, byte[])
  • getAllByName(java.lang.String)
  • getByName(java.lang.String)
  • getLocalHost()
  • Сериализованная форма

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

Модификатор и тип Метод Описание
boolean equals(Object obj)
Сравнивает этот объект с указанным объектом.
byte[] getAddress()
Возвращает сырой IP-адрес этого объекта InetAddress.
static InetAddress[] getAllByName(String host)
Учитывая имя хоста, возвращает массив его IP-адресов, основываясь на системном разрешителе.
static InetAddress getByAddress(byte[] addr)
Возвращает объект InetAddress, заданный сырым IP-адресом.
static InetAddress getByAddress(String host, byte[] addr)
Создаёт InetAddress на основе предоставленного имени хоста и IP-адреса.
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 адресом локального сайта.
static InetAddress ofLiteral(String ipAddressLiteral)
Создаёт InetAddress на основе предоставленного текстового представления IP-адреса.
String toString()
Преобразует этот IP-адрес в String.

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

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Подробное описание методов

isMulticastAddress

public boolean isMulticastAddress()
Вспомогательная процедура для проверки, является ли InetAddress адресом IP-мультиадресации.
Возвращает:
значение boolean, указывающее, является ли InetAddress адресом IP-мультиадресации
С:
1.1

isAnyLocalAddress

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

isLoopbackAddress

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

isLinkLocalAddress

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

isSiteLocalAddress

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

isMCGlobal

public boolean isMCGlobal()
Вспомогательная процедура для проверки, имеет ли мультиадресной адрес глобальный охват.
Возвращает:
значение boolean, указывающее, является ли адрес мультиадресного адреса глобального охвата, false, если он не имеет глобального охвата или это не мультиадресной адрес
С:
1.4

isMCNodeLocal

public boolean isMCNodeLocal()
Вспомогательная процедура для проверки, имеет ли мультиадресной адрес охват узла.
Возвращает:
значение boolean, указывающее, является ли адрес мультиадресного адреса локального узла, false, если он не имеет локального охвата узла или это не мультиадресной адрес
С:
1.4

isMCLinkLocal

public boolean isMCLinkLocal()
Вспомогательная процедура для проверки, имеет ли мультиадресной адрес охват канала.
Возвращает:
значение boolean, указывающее, является ли адрес мультиадресного адреса локального канала, false, если он не имеет охвата локального канала или это не мультиадресной адрес
С:
1.4

isMCSiteLocal

public boolean isMCSiteLocal()
Вспомогательная процедура для проверки, имеет ли мультиадресной адрес охват сайта.
Возвращает:
значение boolean, указывающее, является ли адрес мультиадресного адреса локального сайта, false, если он не имеет охвата локального сайта или это не мультиадресной адрес
С:
1.4

isMCOrgLocal

public boolean isMCOrgLocal()
Вспомогательная процедура для проверки, имеет ли мультиадресной адрес охват организации.
Возвращает:
значение boolean, указывающее, является ли адрес мультиадресного адреса локальной организации, false, если он не имеет охвата локальной организации или это не мультиадресной адрес
С:
1.4

isReachable

public boolean isReachable(int timeout) throws IOException
Проверяет, доступен ли данный адрес. Реализация делает все возможное, чтобы попытаться установить соединение с хостом, но брандмауэры и конфигурация сервера могут заблокировать запросы, что приведет к статусу недоступности, хотя некоторые конкретные порты могут быть доступны. Типичная реализация использует ICMP ECHO REQUEST, если есть соответствующие привилегии, в противном случае она пытается установить TCP-соединение на порт 7 (Эхо) целевого хоста.

Значение таймаута в миллисекундах указывает максимальное время, которое должно занять попытка. Если операция завершается по таймауту до получения ответа, хост считается недоступным. Отрицательное значение приведет к выбросу IllegalArgumentException.

Параметры:
timeout - время в миллисекундах, прежде чем вызов прерывается
Возвращает:
значение boolean, указывающее, доступен ли адрес.
Исключения:
IOException - если произошла ошибка сети
IllegalArgumentException - если timeout отрицательно.
С:
1.5

isReachable

public boolean isReachable(NetworkInterface netif, int ttl, int timeout) throws IOException
Проверяет, доступен ли данный адрес. Реализация делает все возможное, чтобы попытаться установить соединение с хостом, но брандмауэры и конфигурация сервера могут заблокировать запросы, что приведет к статусу недоступности, хотя некоторые конкретные порты могут быть доступны. Типичная реализация использует ICMP ECHO REQUEST, если есть соответствующие привилегии, в противном случае она пытается установить TCP-соединение на порт 7 (Эхо) целевого хоста.

Параметры network interface и ttl позволяют вызывающей стороне указать сетевой интерфейс, через который будет осуществляться проверка, и максимальное количество переходов, которые должны пройти пакеты. Отрицательное значение для ttl приведет к выбросу IllegalArgumentException.

Значение таймаута в миллисекундах указывает максимальное время, которое должно занять попытка. Если операция завершается по таймауту до получения ответа, хост считается недоступным. Отрицательное значение приведет к выбросу IllegalArgumentException.

Параметры:
netif - сетевой интерфейс, через который будет выполняться проверка, или null для любого интерфейса
ttl - максимальное количество переходов или 0 для значения по умолчанию
timeout - время в миллисекундах, прежде чем вызов прерывается
Возвращает:
значение boolean, указывающее, доступен ли адрес.
Исключения:
IllegalArgumentException - если timeout или ttl отрицательны.
IOException - если произошла ошибка сети
С:
1.5

getHostName

public String getHostName()
Получает имя хоста для данного IP-адреса.

Если этот InetAddress был создан с именем хоста, это имя хоста будет запомнено и возвращено; в противном случае будет выполнен обратный поиск имени, и результат будет возвращен на основе системного разрешителя. Если требуется выполнить поиск в службе имен, вызовите getCanonicalHostName.

Возвращает:
имя хоста для этого IP-адреса
См. также:
  • getCanonicalHostName()

getCanonicalHostName

public String getCanonicalHostName()
Получает полное доменное имя для этого IP-адреса с использованием системного разрешителя.

Системный разрешитель будет использован для обратного поиска имени IP-адреса. Поиск может завершиться неудачей по многим причинам, включая то, что хост не зарегистрирован в службе имен. Если разрешитель не может определить полное доменное имя, этот метод возвращает текстовое представление IP-адреса.

Возвращает:
полное доменное имя для этого IP-адреса. Если системный разрешитель не смог определить полное доменное имя для IP-адреса, вместо него возвращается текстовое представление IP-адреса.
С:
1.4

getAddress

public byte[] getAddress()
Возвращает исходный IP-адрес этого InetAddress объекта. Результат находится в сетевом порядке байтов: байт старшего порядка адреса находится в getAddress()[0].
Возвращает:
исходный IP-адрес этого объекта.

getHostAddress

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

hashCode

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

equals

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

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

Overrides:
equals в классе Object
Parameters:
obj - объект для сравнения.
Returns:
true, если объекты одинаковы; false в противном случае.
See Also:
  • getAddress()

toString

public String toString()
Преобразует этот IP-адрес в String. Возвращаемая строка имеет вид: имя хоста / буквальный IP-адрес. Если имя хоста не разрешено, обратный поиск не выполняется. Часть имени хоста будет представлена пустой строкой.
Overrides:
toString в классе Object
Returns:
строковое представление этого IP-адреса.

getByAddress

public static InetAddress getByAddress(String host, byte[] addr) throws UnknownHostException
Создает InetAddress на основе предоставленного имени хоста и IP-адреса. Системный глобальный решатель не используется для проверки правильности адреса.

Имя хоста может быть именем машины, например, "www.example.com", или текстовым представлением ее IP-адреса.

Никакой проверки корректности имени хоста также не выполняется.

Если addr указывает на IPv4-адрес, будет возвращен экземпляр Inet4Address; в противном случае будет возвращен экземпляр Inet6Address.

Массив байтов IPv4-адреса должен иметь длину 4 байта, а массив байтов IPv6-адреса - 16 байтов.

Parameters:
host - указанный хост
addr - исходный IP-адрес в сетевом порядке байтов
Returns:
объект InetAddress, созданный из исходного IP-адреса.
Throws:
UnknownHostException - если IP-адрес имеет неправильную длину
Since:
1.4

getByName

public static InetAddress getByName(String host) throws UnknownHostException
Определяет IP-адрес хоста по имени хоста.

Имя хоста может быть именем машины, например, "www.example.com", или текстовым представлением ее IP-адреса. Если предоставлен буквальный IP-адрес, проверяется только правильность формата адреса.

Для host, указанного в буквальном IPv6-адресе, принимается форма, определенная в RFC 2732, или формат буквального IPv6-адреса, определенный в RFC 2373. Также поддерживаются IPv6-адреса с областью действия. См. здесь описание IPv6-адресов с областью действия.

Если хост является null или host.length() равно нулю, то возвращается InetAddress, представляющий адрес локального интерфейса. См. RFC 3330 раздел 2 и RFC 2373 раздел 2.5.3.

Parameters:
host - указанный хост или null.
Returns:
IP-адрес для данного имени хоста.
Throws:
UnknownHostException - если не удалось найти IP-адрес для host или если был указан идентификатор области для глобального IPv6-адреса.
External Specifications
  • RFC 2373: Архитектура адресации IP версии 6
  • RFC 3330: Специальные IPv4-адреса

getAllByName

public static InetAddress[] getAllByName(String host) throws UnknownHostException
По имени хоста возвращает массив его IP-адресов, основанный на системном решателе.

Имя хоста может быть именем машины, например, "www.example.com", или текстовым представлением ее IP-адреса. Если предоставлен буквальный IP-адрес, проверяется только правильность формата адреса.

Для host, указанного в литеральном IPv6-адресе, принимается форма, определенная в RFC 2732, или формат буквального IPv6-адреса, определенный в RFC 2373. Литеральный IPv6-адрес также может быть квалифицирован путем добавления идентификатора зоны области или scope_id. Синтаксис и использование scope_id описаны здесь.

Если хост является null или host.length() равно нулю, то возвращается InetAddress, представляющий адрес локального интерфейса. См. RFC 3330 раздел 2 и RFC 2373 раздел 2.5.3.

Parameters:
host - имя хоста или null.
Returns:
массив всех IP-адресов для данного имени хоста.
Throws:
UnknownHostException - если не удалось найти IP-адрес для host или если был указан идентификатор области для глобального IPv6-адреса.
External Specifications
  • RFC 2373: Архитектура адресации IP версии 6
  • RFC 3330: Специальные IPv4-адреса

getLoopbackAddress

public static InetAddress getLoopbackAddress()
Возвращает адрес обратной связи.

Возвращаемый InetAddress будет представлять IPv4-адрес обратной связи, 127.0.0.1, или IPv6-адрес обратной связи, ::1. Возвращаемый IPv4-адрес обратной связи - лишь один из многих в формате 127.*.*.*

Returns:
экземпляр InetAddress обратной связи.
Since:
1.7

ofLiteral

public static InetAddress ofLiteral(String ipAddressLiteral)
Создает InetAddress на основе предоставленного текстового представления IP-адреса.

Предоставленный литерал IP-адреса сначала анализируется как литерал IPv4-адреса. Если его нельзя проанализировать как литерал IPv4-адреса, то метод пытается проанализировать его как литерал IPv6-адреса. Если ни одна попытка не увенчается успехом, выбрасывается IllegalArgumentException.

Этот метод не блокируется, т.е. обратный поиск не выполняется.

Parameters:
ipAddressLiteral - текстовое представление IP-адреса.
Returns:
объект InetAddress без установленного имени хоста, и созданный из предоставленного литерала IP-адреса.
Throws:
IllegalArgumentException - если ipAddressLiteral нельзя проанализировать как литерал IPv4 или IPv6-адреса.
NullPointerException - если ipAddressLiteral является null.
Since:
22
See Also:
  • Inet4Address.ofLiteral(String)
  • Inet6Address.ofLiteral(String)
  • Inet4Address.ofPosixLiteral(String)

getByAddress

public static InetAddress getByAddress(byte[] addr) throws UnknownHostException
Возвращает объект InetAddress, заданный исходным IP-адресом. Аргумент находится в сетевом порядке байтов: старший байт адреса находится в getAddress()[0].

Этот метод не блокируется, т.е. обратный поиск не выполняется.

Массив байтов IPv4-адреса должен иметь длину 4 байта, а массив байтов IPv6-адреса - 16 байтов.

Parameters:
addr - исходный IP-адрес в сетевом порядке байтов
Returns:
объект InetAddress, созданный из исходного IP-адреса.
Throws:
UnknownHostException - если IP-адрес имеет неправильную длину
Since:
1.4

getLocalHost

public static InetAddress getLocalHost() throws UnknownHostException
Возвращает адрес локального хоста. Это достигается путем получения имени хоста из системы, а затем преобразования этого имени в InetAddress.

Примечание: разрешенный адрес может быть кэширован на короткий период времени.

Returns:
адрес локального хоста.
Throws:
UnknownHostException - если имя локального хоста не удалось преобразовать в адрес.
See Also:
  • getByName(java.lang.String)

© 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/InetAddress.html

Spec-Zone.ru

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