Класс Inet4Address
- Все реализованные интерфейсы:
Serializable
public final class Inet4Address extends InetAddress
Текстовое представление адресов IPv4
Текстовое представление адреса IPv4, используемого в качестве входных данных для методов, имеет один из следующих форматов:
d.d.d.dd.d.dd.dd
Если указаны четыре части, каждая из них интерпретируется как байт данных и присваивается, слева направо, четырём байтам адреса IPv4.
Если указан адрес из трёх частей, последняя часть интерпретируется как 16-битное значение и помещается в два правых байта сетевого адреса. Это делает формат адреса из трёх частей удобным для задания адресов сетей класса B, например, 128.net.host.
Если указан адрес из двух частей, последняя часть интерпретируется как 24-битное значение и помещается в три правых байта сетевого адреса. Это делает формат адреса из двух частей удобным для задания адресов сетей класса А, например, net.host.
Если указана только одна часть, значение хранится непосредственно в сетевом адресе без перестановки байтов.
Например, следующие (десятичные) формы поддерживаются методами ofLiteral(String) и InetAddress.getByName(String), которые способны анализировать текстовые представления адресов IPv4:
// Dotted-decimal 'd.d.d.d' form with four part address literal
InetAddress.getByName("007.008.009.010"); // ==> /7.8.9.10
InetAddress.getByName("127.0.1.1"); // ==> /127.0.1.1
// Dotted-decimal 'd.d.d' form with three part address literal,
// the last part is placed in the right most two bytes
// of the constructed address
InetAddress.getByName("127.0.257"); // ==> /127.0.1.1
// Dotted-decimal 'd.d' form with two part address literal,
// the last part is placed in the right most three bytes
// of the constructed address
Inet4Address.ofLiteral("127.257"); // ==> /127.0.1.1
// 'd' form with one decimal value that is stored directly in
// the constructed address bytes without any rearrangement
Inet4Address.ofLiteral("02130706689"); // ==> /127.0.1.1
Вышеприведённые формы соответствуют «строгому» десятичному синтаксису. Кроме того, метод ofPosixLiteral(String) реализует алгоритм разбора POSIX inet_addr, совместимый алгоритм, позволяющий использовать октальные и шестнадцатеричные сегменты адреса. Обратитесь к RFC 6943: Вопросы сравнения идентификаторов в целях безопасности. Кроме Inet4Address.ofPosixLiteral(String), все методы поддерживают только строгий десятичный разбор.
Для методов, возвращающих текстовое представление в качестве выходного значения, используется первый формат, т.е. строка с точками и десятками в строгом десятичном формате.
Сфера действия мультиадресного адреса
Исторически поле TTL IPv4 в заголовке IP использовалось как поле охвата мультикаста: TTL 0 означает локальный узел, 1 — локальный для канала, до 32 — локальный для сайта, до 64 — региональный, до 128 — континентальный, а до 255 — глобальный. Однако предпочтительно использовать администрируемый охват. Обратитесь к RFC 2365: Администрируемые IP-мультиадресные адреса- С:
- 1.4
- Внешние спецификации
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Сравнивает этот объект с указанным объектом. |
byte[] |
getAddress() |
Возвращает сырой IP-адрес этого InetAddress объекта. |
String |
getHostAddress() |
Возвращает строку IP-адреса в текстовой форме представления. |
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 |
isSiteLocalAddress() |
Вспомогательная процедура для проверки, является ли InetAddress локальным адресом сайта. |
static Inet4Address |
ofLiteral |
Создает Inet4Address на основе предоставленного текстового представления адреса IPv4. |
static Inet4Address |
ofPosixLiteral |
Создает Inet4Address на основе предоставленного текстового представления адреса IPv4 в POSIX inet_addr совместимом формате. |
Методы, объявленные в классе java.net.InetAddress
getAllByName, getByAddress, getByAddress, getByName, getCanonicalHostName, getHostName, getLocalHost, getLoopbackAddress, isReachable, isReachable, toString
Краткое описание методов
ofLiteral
public static Inet4Address ofLiteral(String ipv4AddressLiteral)
Inet4Address на основе предоставленного текстового представления адреса IPv4. Если предоставленный литерал адреса IPv4 не может представлять действительный адрес IPv4, выбрасывается IllegalArgumentException.
Этот метод не блокирует, т. е. обратный поиск не выполняется.
- Параметры:
-
ipv4AddressLiteral- текстовое представление адреса IPv4. - Возвращает:
- объект
Inet4Addressбез установленного имени хоста, созданный из предоставленного литерала адреса IPv4. - Исключения:
-
IllegalArgumentException- еслиipv4AddressLiteralне может быть разобран как литерал адреса IPv4. -
NullPointerException- еслиipv4AddressLiteralявляетсяnull. - С версии:
- 22
ofPosixLiteral
public static Inet4Address ofPosixLiteral(String posixIPAddressLiteral)
Inet4Address на основе предоставленного текстового представления адреса IPv4 в совместимой с POSIX inet_addr форме. Метод ofPosixLiteral реализует совместимый с POSIX inet_addr алгоритм разбора, позволяющий использовать восьмеричные и шестнадцатеричные сегменты адреса. "0" является префиксом для восьмеричных чисел, "0x" и "0X" являются префиксами для шестнадцатеричных чисел. Не нулевые сегменты адреса, начинающиеся с ненулевых цифр, разбираются как десятичные числа. Следующие (не десятичные) формы поддерживаются этим методом:
// Dotted-quad 'x.x.x.x' form with four part address literal
Inet4Address.ofPosixLiteral("0177.0.0.1"); // ==> /127.0.0.1
Inet4Address.ofPosixLiteral("0x7F.0.0.1"); // ==> /127.0.0.1
// Dotted-triple 'x.x.x' form with three part address literal,
// the last part is placed in the rightmost two bytes
// of the constructed address
Inet4Address.ofPosixLiteral("0177.0.0402"); // ==> /127.0.1.2
Inet4Address.ofPosixLiteral("0x7F.0.0x102"); // ==> /127.0.1.2
// Dotted-double 'x.x' form with two part address literal,
// the last part is placed in the rightmost three bytes
// of the constructed address
Inet4Address.ofPosixLiteral("0177.0201003"); // ==> /127.1.2.3
Inet4Address.ofPosixLiteral("0x7F.0x10203"); // ==> /127.1.2.3
Inet4Address.ofPosixLiteral("127.66051"); // ==> /127.1.2.3
// Dotless 'x' form with one value that is stored directly in
// the constructed address bytes without any rearrangement
Inet4Address.ofPosixLiteral("0100401404"); // ==> /1.2.3.4
Inet4Address.ofPosixLiteral("0x1020304"); // ==> /1.2.3.4
Inet4Address.ofPosixLiteral("16909060"); // ==> /1.2.3.4
Если предоставленный литерал адреса IPv4 не может представлять действительный адрес IPv4 в форме POSIX, выбрасывается IllegalArgumentException.
Этот метод не блокирует, т. е. поиск имени хоста не выполняется.
- Примечание к API:
- Этот метод дает другие результаты по сравнению с ofLiteral(java.lang.String), когда параметр
posixIPAddressLiteralсодержит сегменты адреса с ведущими нулями. Сегмент адреса с ведущим нулем всегда разбирается этим методом как восьмеричное число, поэтому0255(восьмеричное) будет разобран как173(десятичное). С другой стороны,Inet4Address.ofLiteralигнорирует ведущие нули, разбирает все числа как десятичные и создает255. В тех случаях, когда этот метод разбирает0256.0256.0256.0256(восьмеричное) и создает174.174.174.174(десятичное) в четырехточечной точечной нотации,Inet4Address.ofLiteralвыброситIllegalArgumentException. - Параметры:
-
posixIPAddressLiteral- текстовое представление адреса IPv4. - Возвращает:
- объект
Inet4Addressбез установленного имени хоста, созданный из предоставленного литерала адреса IPv4. - Исключения:
-
IllegalArgumentException- еслиposixIPAddressLiteralне может быть разобран как литерал адреса IPv4. -
NullPointerException- еслиposixIPAddressLiteralявляетсяnull. - С версии:
- 23
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-адрес этого объекта.
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в противном случае. - См. также:
© 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/Inet4Address.html