Класс Inet6Address
- Все реализуемые интерфейсы:
Serializable
public final class Inet6Address extends InetAddress
Текстовое представление адресов IPv6
Текстовое представление адреса IPv6, используемое в качестве входных данных методов, может иметь одну из следующих форм:-
Предпочтительная форма — x:x:x:x:x:x:x:x, где «x» — шестнадцатеричные значения восьми 16-разрядных частей адреса. Это полная форма. Например,
1080:0:0:0:8:800:200C:417A
Обратите внимание, что начальные нули в отдельном поле указывать необязательно. Однако в каждом поле должна быть хотя бы одна цифра, за исключением случаев, описанных ниже.
-
Из-за некоторых способов выделения адресов IPv6 определённых типов часто встречаются адреса с длинными последовательностями нулевых битов. Чтобы упростить запись адресов, содержащих нулевые биты, предусмотрен специальный синтаксис для сжатия нулей. «::» обозначает несколько групп из 16 нулевых битов. В адресе «::» может встречаться только один раз. «::» также можно использовать для сжатия начальных и/или конечных нулей адреса. Например,
1080::8:800:200C:417A
-
Альтернативная форма, которая иногда удобнее при работе в смешанной среде с узлами 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 указывает интерфейс локальной системы и может быть задан двумя способами.
- В виде числового идентификатора. Это должно быть положительное целое число, идентифицирующее конкретный интерфейс и область действия в соответствии с системой. Обычно числовые значения можно определить с помощью средств администрирования системы. Для каждого интерфейса может быть задано несколько значений — по одному для каждой области действия. Если область действия не указана, используется значение по умолчанию, равное нулю.
-
В виде строки. Это должна быть точная строка, возвращаемая методом
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
- Внешние спецификации
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Сравнивает этот объект с указанным объектом. |
byte[] |
getAddress() |
Возвращает необработанный IP-адрес этого объекта InetAddress. |
static Inet6Address |
getByAddress |
Создаёт Inet6Address точно так же, как InetAddress.getByAddress(String,byte[]), за исключением того, что IPv6 scope_id устанавливается в указанное числовое значение. |
static Inet6Address |
getByAddress |
Создаёт 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 |
Создаёт InetAddress на основе предоставленного текстового представления адреса IPv6. |
Методы, объявленные в классе InetAddress
getAllByName, getByAddress, getByAddress, getByName, getCanonicalHostName, getHostName, getLocalHost, getLoopbackAddress, isReachable, isReachable, toString | Модификатор и тип | Метод | Описание |
|---|---|---|
static InetAddress[] |
getAllByName |
По имени хоста возвращает массив его IP-адресов на основе общесистемного средства разрешения имён. |
static InetAddress |
getByAddress |
Возвращает объект InetAddress по необработанному IP-адресу. |
static InetAddress |
getByAddress |
Создаёт InetAddress на основе указанного имени хоста и IP-адреса. |
static InetAddress |
getByName |
Определяет IP-адрес хоста по его имени. |
String |
getCanonicalHostName() |
Получает полное доменное имя для этого IP-адреса с помощью общесистемного средства разрешения имён. |
String |
getHostName() |
Получает имя хоста для этого IP-адреса. |
static InetAddress |
getLocalHost() |
Возвращает адрес локального хоста. |
static InetAddress |
getLoopbackAddress() |
Возвращает адрес обратной связи. |
boolean |
isReachable |
Проверяет, доступен ли этот адрес. |
boolean |
isReachable |
Проверяет, доступен ли этот адрес. |
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() |
Переводит текущий поток в состояние ожидания до пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Переводит текущий поток в состояние ожидания до пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного времени. |
final void |
wait |
Переводит текущий поток в состояние ожидания до пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного времени. |
Подробное описание методов
getByAddress
public static Inet6Address getByAddress(String host, byte[] addr, NetworkInterface nif) throws UnknownHostException
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
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()
- Переопределяет:
-
isMulticastAddressв классеInetAddress - Возвращает:
- значение
boolean, указывающее, является ли InetAddress IP-адресом многоадресной рассылки
isAnyLocalAddress
public boolean isAnyLocalAddress()
- Переопределяет:
-
isAnyLocalAddressв классеInetAddress - Возвращает:
- значение
boolean, указывающее, является ли InetAddress адресом-шаблоном.
isLoopbackAddress
public boolean isLoopbackAddress()
- Переопределяет:
-
isLoopbackAddressв классеInetAddress - Возвращает:
- значение
boolean, указывающее, является ли InetAddress адресом обратной связи; в противном случае — false.
isLinkLocalAddress
public boolean isLinkLocalAddress()
- Переопределяет:
-
isLinkLocalAddressв классеInetAddress - Возвращает:
- значение
boolean, указывающее, является ли InetAddress адресом локального канала; возвращает false, если адрес не является одноадресным адресом локального канала.
isSiteLocalAddress
public boolean isSiteLocalAddress()
- Переопределяет:
-
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()
InetAddress. Результат представлен в сетевом порядке байтов: старший байт адреса находится в getAddress()[0].- Переопределяет:
-
getAddressв классеInetAddress - Возвращает:
- необработанный IP-адрес этого объекта.
getScopeId
public int getScopeId()
- Возвращает:
- scopeId или ноль, если он не задан.
- Начиная с версии:
- 1.5
getScopedInterface
public NetworkInterface getScopedInterface()
- Возвращает:
- интерфейс с областью действия или null, если он не задан.
- Начиная с версии:
- 1.5
getHostAddress
public String getHostAddress()
- Переопределяет:
-
getHostAddressв классеInetAddress - Возвращает:
- необработанный IP-адрес в строковом формате.
hashCode
public int hashCode()
- Переопределяет:
-
hashCodeв классеInetAddress - Возвращает:
- значение хеш-кода для этого IP-адреса.
- См. также:
equals
public boolean equals(Object obj)
true тогда и только тогда, когда аргумент не равен null и представляет тот же IP-адрес, что и этот объект. Два экземпляра InetAddress представляют один и тот же IP-адрес, если длины массивов байтов, возвращаемых методом getAddress, совпадают и все элементы этих массивов одинаковы.
- Переопределяет:
-
equalsв классеInetAddress - Параметры:
-
obj— объект для сравнения. - Возвращает:
-
true, если объекты совпадают; в противном случае —false. - См. также:
isIPv4CompatibleAddress
public boolean isIPv4CompatibleAddress()
- Возвращает:
- значение
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.