Класс InetAddress
- Все реализуемые интерфейсы:
Serializable
- Прямые известные подклассы:
Inet4Address, Inet6Address
public sealed class InetAddress extends Object implements Serializable permits Inet4Address, Inet6Address
IP-адрес — это 32- или 128-битное беззнаковое число, используемое протоколом IP, протоколом более низкого уровня, на котором построены такие протоколы, как UDP и TCP. Архитектура IP-адресов определена в RFC 790: Назначенные номера, RFC 1918: Распределение адресов для частных сетей Интернета, RFC 2365: IP-многоадресная рассылка с административной областью действия и RFC 2373: Архитектура адресации IP версии 6. Экземпляр InetAddress состоит из IP-адреса и, возможно, соответствующего имени хоста (в зависимости от того, был ли он создан с именем хоста или для него уже было выполнено обратное разрешение имени хоста).
Типы адресов
| Тип адреса | Описание |
|---|---|
| одноадресный | Идентификатор одного интерфейса. Пакет, отправленный на одноадресный адрес, доставляется интерфейсу, идентифицируемому этим адресом. Неопределённый адрес — также называется адресом anylocal или подстановочным адресом. Его нельзя назначать ни одному узлу. Он указывает на отсутствие адреса. Например, его можно использовать в качестве цели вызова bind, что позволяет серверу принимать клиентское соединение на любом интерфейсе, если у хоста сервера несколько интерфейсов. Неопределённый адрес нельзя использовать в качестве адреса назначения IP-пакета. Адреса loopback — это адреса, назначенные интерфейсу обратной петли. Всё, что отправляется на этот 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 секунд) для повышения производительности.
Если поведение по умолчанию нежелательно, можно задать другое значение времени жизни (TTL) для положительного кэширования с помощью свойства безопасности Java. Аналогичным образом системный администратор при необходимости может настроить другое значение TTL для отрицательного кэширования или продлить срок использования устаревших данных.
Значения TTL, используемые для положительного и отрицательного кэширования результатов разрешения имён хостов, управляются тремя свойствами безопасности Java:
- 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 означает «кэшировать бесконечно».
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Сравнивает этот объект с указанным объектом. |
byte[] |
getAddress() |
Возвращает необработанный IP-адрес этого объекта InetAddress. |
static InetAddress[] |
getAllByName |
По имени хоста возвращает массив его IP-адресов, используя общесистемное средство разрешения. |
static InetAddress |
getByAddress |
Возвращает объект InetAddress по необработанному IP-адресу. |
static InetAddress |
getByAddress |
Создаёт InetAddress на основе указанного имени хоста и IP-адреса. |
static InetAddress |
getByName |
Определяет 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 |
Проверяет, доступен ли этот адрес. |
boolean |
isReachable |
Проверяет, доступен ли этот адрес. |
boolean |
isSiteLocalAddress() |
Вспомогательный метод для проверки, является ли InetAddress адресом локальной области. |
static InetAddress |
ofLiteral |
Создаёт InetAddress на основе указанного текстового представления IP-адреса. |
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 |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо до истечения указанного периода реального времени. |
Подробное описание методов
isMulticastAddress
public boolean isMulticastAddress()
- Возвращает:
- значение
boolean, указывающее, является ли InetAddress IP-адресом многоадресной рассылки - Начиная с:
- 1.1
isAnyLocalAddress
public boolean isAnyLocalAddress()
- Возвращает:
- значение
boolean, указывающее, является ли InetAddress адресом-шаблоном. - Начиная с:
- 1.4
isLoopbackAddress
public boolean isLoopbackAddress()
- Возвращает:
- значение
boolean, указывающее, является ли InetAddress адресом обратной петли; в противном случае — false. - Начиная с:
- 1.4
isLinkLocalAddress
public boolean isLinkLocalAddress()
- Возвращает:
- значение
boolean, указывающее, является ли InetAddress локальным адресом канала; или false, если адрес не является локальным одноадресным адресом канала. - Начиная с:
- 1.4
isSiteLocalAddress
public boolean isSiteLocalAddress()
- Возвращает:
- значение
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
Значение времени ожидания в миллисекундах указывает максимальную продолжительность попытки. Если время ожидания истечёт до получения ответа, узел считается недоступным. Отрицательное значение приведёт к выбросу IllegalArgumentException.
- Параметры:
-
timeout— время в миллисекундах, по истечении которого вызов прерывается - Возвращает:
- значение
boolean, указывающее, доступен ли адрес. - Выбрасывает:
-
IOException— если возникает ошибка сети -
IllegalArgumentException— еслиtimeoutимеет отрицательное значение. - Начиная с:
- 1.5
isReachable
public boolean isReachable(NetworkInterface netif, int ttl, int timeout) throws IOException
Параметры network interface и ttl позволяют вызывающему коду указать сетевой интерфейс, через который будет выполняться проверка, и максимальное число переходов, которые должны пройти пакеты. Отрицательное значение ttl приведёт к выбросу IllegalArgumentException.
Значение времени ожидания в миллисекундах указывает максимальную продолжительность попытки. Если время ожидания истечёт до получения ответа, узел считается недоступным. Отрицательное значение приведёт к выбросу IllegalArgumentException.
- Параметры:
-
netif— NetworkInterface, через который будет выполняться проверка, или null для любого интерфейса -
ttl— максимальное число попыток перехода или 0 для значения по умолчанию -
timeout— время в миллисекундах, по истечении которого вызов прерывается - Возвращает:
- значение
boolean, указывающее, доступен ли адрес. - Выбрасывает:
-
IllegalArgumentException— еслиtimeoutилиttlимеют отрицательные значения. -
IOException— если возникает ошибка сети - Начиная с:
- 1.5
getHostName
public String getHostName()
Если этот InetAddress был создан с именем узла, это имя будет сохранено и возвращено; в противном случае будет выполнен обратный поиск имени, а результат будет получен от системного преобразователя имён. Если требуется поиск в службе имён, вызовите getCanonicalHostName.
- Возвращает:
- имя узла для этого IP-адреса
- См. также:
getCanonicalHostName
public String getCanonicalHostName()
Системный преобразователь имён используется для обратного поиска имени IP-адреса. Поиск может завершиться неудачей по многим причинам, например если узел не зарегистрирован в службе имён. Если преобразователь не может определить полное доменное имя, этот метод возвращает текстовое представление IP-адреса.
- Возвращает:
- полное доменное имя для этого IP-адреса. Если системный преобразователь имён не смог определить полное доменное имя IP-адреса, вместо него возвращается текстовое представление IP-адреса.
- Начиная с:
- 1.4
getAddress
public byte[] getAddress()
InetAddress. Результат представлен в сетевом порядке байтов: старший байт адреса находится в getAddress()[0].- Возвращает:
- необработанный IP-адрес этого объекта.
getHostAddress
public String getHostAddress()
- Возвращает:
- необработанный IP-адрес в строковом формате.
- Начиная с:
- 1.0.2
hashCode
equals
public boolean equals(Object obj)
true тогда и только тогда, когда аргумент не является null и представляет тот же IP-адрес, что и этот объект. Два экземпляра InetAddress представляют один и тот же IP-адрес, если длина массивов байтов, возвращаемых getAddress, одинакова для обоих экземпляров и все элементы этих массивов совпадают.
toString
public String toString()
String. Возвращаемая строка имеет формат: имя узла / буквальный IP-адрес. Если имя узла не разрешено, обратный поиск не выполняется. В качестве имени узла будет представлена пустая строка.getByAddress
public static InetAddress getByAddress(String host, byte[] addr) throws UnknownHostException
Имя узла может быть именем компьютера, например "www.example.com", или текстовым представлением его IP-адреса.
Проверка допустимости имени узла также не выполняется.
Если addr задаёт IPv4-адрес, будет возвращён экземпляр Inet4Address; в противном случае будет возвращён экземпляр Inet6Address.
Массив байтов IPv4-адреса должен содержать 4 байта, а массив байтов IPv6-адреса — 16 байт
- Параметры:
-
host— указанное имя узла -
addr— необработанный IP-адрес в сетевом порядке байтов - Возвращает:
- объект InetAddress, созданный на основе необработанного IP-адреса.
- Выбрасывает:
-
UnknownHostException— если длина IP-адреса недопустима - Начиная с:
- 1.4
getByName
public static InetAddress getByName(String host) throws UnknownHostException
Имя узла может быть именем компьютера, например "www.example.com", или текстовым представлением его IP-адреса. Если указан буквальный IP-адрес, проверяется только допустимость формата адреса.
Для host, заданного в виде буквального IPv6-адреса, допускается как форма, определённая в RFC 2732, так и формат буквального IPv6-адреса, определённый в RFC 2373. Также поддерживаются IPv6-адреса с областью действия. Описание IPv6-адресов с областью действия см. здесь.
Если узел — null или host.length() равен нулю, возвращается InetAddress, представляющий адрес интерфейса обратной петли. См. раздел 2 документа RFC 3330 и раздел 2.5.3 документа RFC 2373.
- Параметры:
-
host— указанное имя узла илиnull. - Возвращает:
- IP-адрес для указанного имени узла.
- Выбрасывает:
-
UnknownHostException— если дляhostне удалось найти IP-адрес или если для глобального IPv6-адреса указан scope_id. - Внешние спецификации
getAllByName
public static InetAddress[] getAllByName(String host) throws UnknownHostException
Имя узла может быть именем компьютера, например "www.example.com", или текстовым представлением его IP-адреса. Если указан буквальный IP-адрес, проверяется только допустимость формата адреса.
Для host, заданного в виде буквального IPv6-адреса, допускается как форма, определённая в RFC 2732, так и формат буквального IPv6-адреса, определённый в RFC 2373. Буквальный IPv6-адрес также можно дополнить идентификатором зоны области действия или scope_id. Синтаксис и использование scope_ids описаны здесь.
Если узел — null или host.length() равен нулю, возвращается InetAddress, представляющий адрес интерфейса обратной петли. См. раздел 2 документа RFC 3330 и раздел 2.5.3 документа RFC 2373.
- Параметры:
-
host— имя узла илиnull. - Возвращает:
- массив всех IP-адресов для указанного имени узла.
- Выбрасывает:
-
UnknownHostException— если дляhostне удалось найти IP-адрес или если для глобального IPv6-адреса указан scope_id. - Внешние спецификации
getLoopbackAddress
public static InetAddress getLoopbackAddress()
Возвращённый InetAddress будет представлять IPv4-адрес обратной петли 127.0.0.1 или IPv6-адрес обратной петли ::1. Возвращаемый IPv4-адрес обратной петли — только один из множества адресов вида 127.*.*.*
- Возвращает:
- экземпляр InetAddress, представляющий адрес обратной петли.
- Начиная с:
- 1.7
ofLiteral
public static InetAddress ofLiteral(String ipAddressLiteral)
InetAddress на основе указанного текстового представления IP-адреса. Указанный буквальный IP-адрес сначала анализируется как буквальный IPv4-адрес. Если его не удаётся разобрать как буквальный IPv4-адрес, метод пытается разобрать его как буквальный IPv6-адрес. Если обе попытки не удаются, выбрасывается IllegalArgumentException.
Этот метод не блокирует выполнение, то есть обратный поиск не выполняется.
- Параметры:
-
ipAddressLiteral— текстовое представление IP-адреса. - Возвращает:
- объект
InetAddressбез заданного имени узла, созданный на основе указанного буквального IP-адреса. - Выбрасывает:
-
IllegalArgumentException— еслиipAddressLiteralне удаётся разобрать как буквальный IPv4- или IPv6-адрес. -
NullPointerException— еслиipAddressLiteralимеет значениеnull. - Начиная с:
- 22
- См. также:
getByAddress
public static InetAddress getByAddress(byte[] addr) throws UnknownHostException
InetAddress по необработанному IP-адресу. Аргумент задан в сетевом порядке байтов: старший байт адреса находится в getAddress()[0]. Этот метод не блокирует выполнение, то есть обратный поиск не выполняется.
Массив байтов IPv4-адреса должен содержать 4 байта, а массив байтов IPv6-адреса — 16 байт
- Параметры:
-
addr— необработанный IP-адрес в сетевом порядке байтов - Возвращает:
- объект InetAddress, созданный на основе необработанного IP-адреса.
- Выбрасывает:
-
UnknownHostException— если длина IP-адреса недопустима - Начиная с:
- 1.4
getLocalHost
public static InetAddress getLocalHost() throws UnknownHostException
InetAddress. Примечание: преобразованный адрес может кэшироваться в течение короткого времени.
- Возвращает:
- адрес локального узла.
- Выбрасывает:
-
UnknownHostException— если не удалось преобразовать имя локального узла в адрес. - См. также:
© 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.