Spec-Zone.ru › OpenJDK 24

Класс Inet6Address

java.lang.Object
java.net.InetAddress
java.net.Inet6Address
Все реализуемые интерфейсы:
Serializable
public final class Inet6Address extends InetAddress
Этот класс представляет адрес Интернет-протокола версии 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-отображения
В форме ::ffff:w.x.y.z, этот адрес IPv6 используется для представления адреса IPv4. Он позволяет нативному программному обеспечению использовать ту же структуру данных адреса, а также тот же сокет при общении как с узлами IPv4, так и с узлами IPv6.

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

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

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

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

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

Адрес IPv6%scope_id

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

  1. В виде числового идентификатора. Это должно быть положительное целое число, которое идентифицирует конкретный интерфейс и область действия, как понимает система. Обычно числовые значения можно определить с помощью административных инструментов системы. Каждый интерфейс может иметь несколько значений, по одному для каждой области действия. Если область действия не указана, используется значение по умолчанию — ноль.
  2. В виде строки. Это должна быть точная строка, которая возвращается методом NetworkInterface.getName() для рассматриваемого интерфейса. Когда Inet6Address создаётся таким образом, числовой scope-id определяется в момент создания объекта путём запроса соответствующего 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 устанавливается в заданное числовое значение.
static Inet6Address getByAddress(String host, byte[] addr, NetworkInterface nif)
Создаёт Inet6Address точно так же, как InetAddress.getByAddress(String,byte[]), за исключением того, что идентификатор области IPv6 устанавливается в значение, соответствующее заданному интерфейсу для типа адреса, указанного в addr.
String getHostAddress()
Возвращает строковое представление IP-адреса.
NetworkInterface getScopedInterface()
Возвращает интерфейс области, если этот экземпляр был создан с интерфейсом области.
int getScopeId()
Возвращает числовой scopeId, если этот экземпляр связан с интерфейсом.
int hashCode()
Возвращает хэш-код для этого IP-адреса.
boolean isAnyLocalAddress()
Вспомогательная процедура для проверки, является ли InetAddress адресом-маской.
boolean isIPv4CompatibleAddress()
Вспомогательная процедура для проверки, является ли InetAddress совместимым IPv6 адресом IPv4.
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.

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

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

Методы, объявленные в классе java.lang.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 устанавливается в значение, соответствующее заданному интерфейсу для типа адреса, указанного в addr. Вызов завершится ошибкой UnknownHostException, если заданный интерфейс не имеет назначенного числового идентификатора области для данного типа адреса (например, локальный для канала связи или локальный для узла). См. здесь описание адресов IPv6 с областью действия.
Параметры:
host - указанный узел
addr - необработанный IP-адрес в сетевом порядке байтов
nif - интерфейс, с которым должен быть связан этот адрес.
Возвращает:
объект Inet6Address, созданный из необработанного IP-адреса.
Исключения:
UnknownHostException - если длина IP-адреса неверна или если интерфейс не имеет назначенного числового идентификатора области для данного типа адреса.
С версии:
1.5

getByAddress

public static Inet6Address getByAddress(String host, byte[] addr, int scope_id) throws UnknownHostException
Создает объект Inet6Address точно так же, как InetAddress.getByAddress(String,byte[]), за исключением того, что идентификатор области IPv6 устанавливается в заданное числовое значение. Идентификатор области не проверяется на соответствие какому-либо интерфейсу в системе. См. здесь описание адресов IPv6 с областью действия.
Параметры:
host - указанный узел
addr - необработанный IP-адрес в сетевом порядке байтов
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, если этот экземпляр связан с интерфейсом. Если scope_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-адреса.
Overrides:
hashCode в классе InetAddress
Возвращает:
значение хэш-кода для этого 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 в классе InetAddress
Параметры:
obj - объект для сравнения.
Возвращает:
true, если объекты одинаковы; false в противном случае.
См. также:
  • InetAddress.getAddress()

isIPv4CompatibleAddress

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

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

Spec-Zone.ru

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