Spec-Zone.ru › OpenJDK 25

Класс Inet6Address

java.lang.Object
java.net.InetAddress
java.net.Inet6Address
Все реализованные интерфейсы:
Serializable
public final class Inet6Address extends InetAddress
Этот класс представляет адрес Internet Protocol версии 6 (IPv6). Определён в RFC 2373: архитектура адресации IP версии 6.

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

Текстовое представление адреса IPv6, используемое в качестве входных данных для методов, принимает одну из следующих форм:
  1. Предпочтительная форма — x:x:x:x:x:x:x:x, где 'x' — шестнадцатеричные значения восьми 16-битных частей адреса. Это полная форма. Например:

    • 1080:0:0:0:8:800:200C:417A

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

  2. Из-за некоторых способов распределения определённых типов адресов IPv6 в адресах часто встречаются длинные последовательности нулевых битов. Чтобы упростить запись адресов, содержащих нулевые биты, предусмотрен специальный синтаксис для сокращения нулей. Обозначение "::" указывает на несколько групп из 16 нулевых битов. "::" может встречаться в адресе только один раз. "::" также можно использовать для сокращения начальных и/или конечных нулей в адресе. Например:

    • 1080::8:800:200C:417A
  3. Альтернативная форма, иногда более удобная при работе в смешанной среде узлов IPv4 и IPv6, — x:x:x:x:x:x:d.d.d.d, где 'x' — шестнадцатеричные значения шести старших 16-битных частей адреса, а 'd' — десятичные значения четырёх младших 8-битных частей адреса в стандартном представлении IPv4, например:

    • ::FFFF:129.144.52.38
    • ::129.144.52.38

    где "::FFFF:d.d.d.d" и "::d.d.d.d" — соответственно общие формы IPv4-отображённого адреса IPv6 и IPv4-совместимого адреса IPv6. Обратите внимание, что часть IPv4 должна иметь форму "d.d.d.d". Следующие формы недопустимы:

    • ::FFFF:d.d.d
    • ::FFFF:d.d
    • ::d.d.d
    • ::d.d

    Следующая форма:

    • ::FFFF:d

    однако допустима, хотя это и нестандартное представление IPv4-совместимого адреса IPv6:

    • ::255.255.0.d

    тогда как "::d" соответствует общему адресу IPv6 "0:0:0:0:0:0:0:d".

В методах, возвращающих текстовое представление в качестве выходного значения, используется полная форма. Inet6Address возвращает полную форму, поскольку она однозначна при использовании в сочетании с другими текстовыми данными.

Специальный адрес IPv6

IPv4-отображённый адрес
Этот адрес IPv6 имеет форму ::ffff:w.x.y.z и используется для представления адреса IPv4. Он позволяет собственной программе использовать одну и ту же структуру данных адреса и один и тот же сокет при обмене данными как с узлами IPv4, так и с узлами IPv6.

В InetAddress и Inet6Address он используется для внутреннего представления и не играет функциональной роли. Java никогда не возвращает IPv4-отображённый адрес. Эти классы могут принимать IPv4-отображённый адрес в качестве входных данных как в виде байтового массива, так и в текстовом представлении. Однако он будет преобразован в адрес IPv4.

Текстовое представление адресов IPv6 с областью действия

Описанное выше текстовое представление адресов IPv6 можно расширить, чтобы указывать адреса IPv6 с областью действия. Это расширение базовой архитектуры адресации описано в RFC 4007: архитектура адресов IPv6 с областью действия.

Поскольку адреса локальной связи и локальной сети не являются глобальными, разные узлы могут иметь один и тот же адрес назначения и быть доступны через разные интерфейсы одной исходной системы. В этом случае говорят, что исходная система подключена к нескольким зонам одной области действия. Чтобы однозначно указать предполагаемую зону назначения, к адресу IPv6 можно добавить идентификатор зоны (или scope_id).

Общий формат для указания scope_id имеет следующий вид:

IPv6-адрес%scope_id

IPv6-адрес — это буквальный адрес IPv6, описанный выше. scope_id указывает на интерфейс локальной системы; его можно задать двумя способами.

  1. В виде числового идентификатора. Это должно быть положительное целое число, идентифицирующее конкретный интерфейс и область действия в соответствии с системой. Обычно числовые значения можно определить с помощью средств администрирования системы. У каждого интерфейса может быть несколько значений — по одному для каждой области действия. Если область действия не указана, используется значение по умолчанию, равное нулю.
  2. В виде строки. Это должна быть точная строка, возвращаемая методом NetworkInterface.getName() для соответствующего интерфейса. При создании Inet6Address таким способом числовой идентификатор области действия определяется во время создания объекта путём запроса соответствующего NetworkInterface.

Обратите также внимание, что числовой scope_id можно получить из экземпляров Inet6Address, возвращаемых классом NetworkInterface. Это позволяет узнать текущие идентификаторы областей действия, настроенные в системе.

Текстовое представление адресов IPv6 в качестве входных данных методов

Методы InetAddress и Inet6Address, принимающие текстовое представление адреса IPv6, допускают заключение этого представления в квадратные скобки. Например:

 // The full IPv6 form
 InetAddress.getByName("1080:0:0:0:8:800:200C:417A");   // ==> /1080:0:0:0:8:800:200c:417a
 InetAddress.getByName("[1080:0:0:0:8:800:200C:417A]"); // ==> /1080:0:0:0:8:800:200c:417a

 // IPv6 scoped address with scope-id as string
 Inet6Address.ofLiteral("fe80::1%en0");   // ==> /fe80:0:0:0:0:0:0:1%en0
 Inet6Address.ofLiteral("[fe80::1%en0]"); // ==> /fe80:0:0:0:0:0:0:1%en0
Начиная с:
1.4
Внешние спецификации
  • RFC 2373: архитектура адресации IP версии 6
  • RFC 4007: архитектура адресов IPv6 с областью действия
См. также:
  • Сериализованная форма

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

Модификатор и тип Метод Описание
boolean equals(Object obj)
Сравнивает этот объект с указанным объектом.
byte[] getAddress()
Возвращает необработанный IP-адрес этого объекта InetAddress.
static Inet6Address getByAddress(String host, byte[] addr, int scope_id)
Создаёт Inet6Address точно так же, как InetAddress.getByAddress(String,byte[]), за исключением того, что для IPv6 scope_id задаётся указанным числовым значением.
static Inet6Address getByAddress(String host, byte[] addr, NetworkInterface nif)
Создаёт Inet6Address точно так же, как InetAddress.getByAddress(String,byte[]), за исключением того, что IPv6 scope_id задаётся значением, соответствующим указанному интерфейсу для типа адреса, заданного в addr.
String getHostAddress()
Возвращает строку IP-адреса в текстовом представлении.
NetworkInterface getScopedInterface()
Возвращает интерфейс с областью действия, если этот экземпляр был создан с таким интерфейсом.
int getScopeId()
Возвращает числовой scopeId, если этот экземпляр связан с интерфейсом.
int hashCode()
Возвращает хеш-код этого IP-адреса.
boolean isAnyLocalAddress()
Вспомогательный метод для проверки, является ли InetAddress адресом-заполнителем.
boolean isIPv4CompatibleAddress()
Вспомогательный метод для проверки, является ли InetAddress IPv4-совместимым адресом IPv6.
boolean isLinkLocalAddress()
Вспомогательный метод для проверки, является ли InetAddress адресом локальной связи.
boolean isLoopbackAddress()
Вспомогательный метод для проверки, является ли InetAddress адресом обратной петли.
boolean isMCGlobal()
Вспомогательный метод для проверки, имеет ли многоадресный адрес глобальную область действия.
boolean isMCLinkLocal()
Вспомогательный метод для проверки, имеет ли многоадресный адрес область действия локальной связи.
boolean isMCNodeLocal()
Вспомогательный метод для проверки, имеет ли многоадресный адрес область действия узла.
boolean isMCOrgLocal()
Вспомогательный метод для проверки, имеет ли многоадресный адрес область действия организации.
boolean isMCSiteLocal()
Вспомогательный метод для проверки, имеет ли многоадресный адрес область действия сети.
boolean isMulticastAddress()
Вспомогательный метод для проверки, является ли InetAddress IP-адресом многоадресной рассылки. Начальные биты 11111111 указывают на то, что адрес является многоадресным.
boolean isSiteLocalAddress()
Вспомогательный метод для проверки, является ли InetAddress адресом локальной сети.
static InetAddress ofLiteral(String ipv6AddressLiteral)
Создаёт InetAddress на основе предоставленного текстового представления адреса IPv6.

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

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

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

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

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

getByAddress

public static Inet6Address getByAddress(String host, byte[] addr, NetworkInterface nif) throws UnknownHostException
Создаёт Inet6Address точно так же, как InetAddress.getByAddress(String,byte[]), за исключением того, что IPv6 scope_id задаётся значением, соответствующим указанному интерфейсу для типа адреса, заданного в addr. Вызов завершится исключением UnknownHostException, если указанному интерфейсу не назначен числовой scope_id для заданного типа адреса (например, локального для связи или локального для сети). Описание адресов IPv6 с областью действия см. здесь.
Параметры:
host — указанный узел
addr — необработанный IP-адрес в сетевом порядке байтов
nif — интерфейс, с которым должен быть связан этот адрес.
Возвращает:
объект Inet6Address, созданный из необработанного IP-адреса.
Выбрасывает:
UnknownHostException — если длина IP-адреса недопустима или интерфейсу не назначен числовой scope_id для заданного типа адреса.
Начиная с:
1.5

getByAddress

public static Inet6Address getByAddress(String host, byte[] addr, int scope_id) throws UnknownHostException
Создаёт Inet6Address точно так же, как InetAddress.getByAddress(String,byte[]), за исключением того, что IPv6 scope_id задаётся указанным числовым значением. scope_id не проверяется на соответствие какому-либо интерфейсу системы. Описание адресов IPv6 с областью действия см. здесь.
Параметры:
host — указанный узел
addr — необработанный IP-адрес в сетевом порядке байтов
scope_id — числовой scope_id адреса.
Возвращает:
объект Inet6Address, созданный из необработанного IP-адреса.
Выбрасывает:
UnknownHostException — если длина IP-адреса недопустима.
Начиная с:
1.5

ofLiteral

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

Если указанный литерал адреса не представляет допустимый адрес IPv6, выбрасывается IllegalArgumentException. IllegalArgumentException также выбрасывается, если литерал адреса IPv6 с областью действия содержит идентификатор области действия, не соответствующий ни одному сетевому интерфейсу системы, или если идентификатор области действия указан в литерале IPv4-отображённого адреса IPv6.

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

Обратите внимание, что поддерживаются также формы литералов адресов IPv6, заключённые в квадратные скобки. Также обратите внимание: если переданный литерал представляет собой IPv4-отображённый адрес IPv6, возвращается экземпляр Inet4Address.

Параметры:
ipv6AddressLiteral — текстовое представление адреса IPv6.
Возвращает:
объект InetAddress без заданного имени узла, созданный на основе предоставленного литерала адреса IPv6.
Выбрасывает:
IllegalArgumentException — если ipv6AddressLiteral невозможно разобрать как литерал адреса IPv6.
NullPointerException — если ipv6AddressLiteral является null.
Начиная с:
22

isMulticastAddress

public boolean isMulticastAddress()
Вспомогательный метод для проверки, является ли InetAddress IP-адресом многоадресной рассылки. Начальные биты 11111111 указывают на то, что адрес является многоадресным.
Переопределяет:
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-адрес этого объекта.

getScopeId

public int getScopeId()
Возвращает числовой scopeId, если этот экземпляр связан с интерфейсом. Если scoped_id не задан, возвращается ноль.
Возвращает:
scopeId или ноль, если он не задан.
Начиная с:
1.5

getScopedInterface

public NetworkInterface getScopedInterface()
Возвращает интерфейс с областью действия, если этот экземпляр был создан с таким интерфейсом.
Возвращает:
интерфейс с областью действия или null, если он не задан.
Начиная с:
1.5

getHostAddress

public String getHostAddress()
Возвращает строку IP-адреса в текстовом представлении. Если экземпляр был создан с указанием идентификатора области действия, этот идентификатор добавляется к IP-адресу после символа "%" (процент). Это может быть числовое значение или строка — в зависимости от того, что использовалось при создании экземпляра.
Переопределяет:
getHostAddress в классе InetAddress
Возвращает:
необработанный IP-адрес в строковом формате.

hashCode

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

equals

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

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

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

isIPv4CompatibleAddress

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

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

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

Spec-Zone.ru

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