Spec-Zone.ru › OpenJDK 17

Класс InetAddress

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

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

Типы адресов

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

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

Адрес без указания не должен использоваться в качестве адреса назначения IP-пакета.

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

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

Сфера действия IP-адреса

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

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

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

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

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

Для формата адреса IPv4 см. Inet4Address#format; Для формата адреса IPv6 см. Inet6Address#format.

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

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

Разрешение имени хоста в IP-адрес выполняется с помощью комбинации информации о конфигурации локальной машины и служб именования сети, таких как система доменных имен (DNS) и служба сетевой информации (NIS). Используемые службы именования по умолчанию — это настроенные локальной машиной. Для любого имени хоста возвращается соответствующий IP-адрес.

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

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

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

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

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

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

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

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

Значение -1 указывает "кэшировать постоянно".

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

Значение 0 указывает "никогда не кэшировать". Значение -1 указывает "кэшировать постоянно".

Since:
1.0
См. также:
  • 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 адресом локальной сети.
String toString()
Преобразует этот IP-адрес в String.

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

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

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

isMulticastAddress

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

isAnyLocalAddress

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

isLoopbackAddress

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

isLinkLocalAddress

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

isSiteLocalAddress

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

isMCGlobal

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

isMCNodeLocal

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

isMCLinkLocal

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

isMCSiteLocal

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

isMCOrgLocal

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

isReachable

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

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

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

isReachable

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

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

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

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

getHostName

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

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

Если есть менеджер безопасности, его метод checkConnect сначала вызывается с именем хоста и -1 в качестве аргументов, чтобы проверить, разрешена ли операция. Если операция не разрешена, будет возвращено текстовое представление IP-адреса.

Возвращает:
имя хоста для этого IP-адреса, или если операция не разрешена проверкой безопасности, текстовое представление IP-адреса.
См. также:
  • getCanonicalHostName()
  • SecurityManager.checkConnect(java.lang.String, int)

getCanonicalHostName

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

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

Возвращает:
полное доменное имя для этого IP-адреса, или если операция не разрешена проверкой безопасности, текстовое представление IP-адреса.
С:
1.4
См. также:
  • SecurityManager.checkConnect(java.lang.String, int)

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 в противном случае.
См. также:
  • 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.

Если есть менеджер безопасности, и host не null или host.length() не равно нулю, метод checkConnect менеджера безопасности вызывается с именем хоста и -1 в качестве аргументов, чтобы определить, разрешена ли операция.

Parameters:
host - указанный хост или null.
Returns:
IP-адрес для данного имени хоста.
Throws:
UnknownHostException - если IP-адрес для host не найден или если для глобального IPv6-адреса был указан идентификатор области.
SecurityException - если менеджер безопасности существует и его метод checkConnect не разрешает операцию

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.

Если есть менеджер безопасности, и host не null или host.length() не равно нулю, метод checkConnect менеджера безопасности вызывается с именем хоста и -1 в качестве аргументов, чтобы определить, разрешена ли операция.

Parameters:
host - имя хоста или null.
Returns:
массив всех IP-адресов для данного имени хоста.
Throws:
UnknownHostException - если IP-адрес для host не найден или если для глобального IPv6-адреса был указан идентификатор области.
SecurityException - если менеджер безопасности существует и его метод checkConnect не разрешает операцию.
См. также:
  • SecurityManager.checkConnect(java.lang.String, int)

getLoopbackAddress

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

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

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

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.

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

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

Returns:
адрес локального хоста.
Throws:
UnknownHostException - если имя локального хоста не удалось разрешить в адрес.
См. также:
  • SecurityManager.checkConnect(java.lang.String, int)
  • getByName(java.lang.String)

© 1993, 2021, 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/17/docs/api/java.base/java/net/InetAddress.html

Spec-Zone.ru

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