Класс 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-адреса и, возможно, соответствующего ему имени узла (в зависимости от того, был ли он создан с именем узла или для него уже выполнялось обратное разрешение имени узла).
Типы адресов
| Тип адреса | Описание |
|---|---|
| одноадресный | Идентификатор одного интерфейса. Пакет, отправленный на одноадресный адрес, доставляется интерфейсу, определяемому этим адресом. Неуказанный адрес — также называемый адресом любого локального интерфейса или адресом-шаблоном. Он никогда не должен назначаться какому-либо узлу. Он указывает на отсутствие адреса. Один из примеров его использования — в качестве цели 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 для отрицательного кэширования или продлить использование устаревших данных.
Три свойства безопасности Java управляют значениями TTL, используемыми для положительного и отрицательного кэширования результатов разрешения имен узлов:
- networkaddress.cache.ttl
- Указывает политику кэширования успешных запросов к службе имен. Значение задается целым числом, обозначающим количество секунд хранения успешного результата в кэше. По умолчанию результаты кэшируются на период времени, определяемый реализацией.
Значение -1 означает «кэшировать навсегда».
- networkaddress.cache.stale.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() |
|
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. |
Подробное описание методов
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— если IP-адрес дляhostне удалось найти или если для глобального 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_id описаны здесь.
Если узел — null или host.length() равен нулю, возвращается InetAddress, представляющий адрес интерфейса обратной петли. См. раздел 2 RFC 3330 и раздел 2.5.3 RFC 2373.
- Параметры:
-
host— имя узла илиnull. - Возвращает:
- массив всех IP-адресов для указанного имени узла.
- Выбрасывает:
-
UnknownHostException— если IP-адрес дляhostне удалось найти или если для глобального 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/InetAddress.html