Класс SocketPermission
- Все реализованные интерфейсы:
Serializable, Guard
public final class SocketPermission extends Permission implements Serializable
host = (hostname | IPv4address | iPv6reference) [:portrange]
portrange = portnumber | -portnumber | portnumber-[portnumber]
Узел указывается в виде DNS-имени, числового IP-адреса или «localhost» (для локального компьютера). Подстановочный символ «*» может встречаться в спецификации узла с DNS-именем один раз. Если он используется, он должен находиться в крайней левой позиции, как в «*.example.com». Формат IPv6-ссылки должен соответствовать указанному в RFC 2732: формат буквальных IPv6-адресов в URL:
ipv6reference = "[" IPv6address "]"
Например, экземпляр SocketPermission можно создать следующим образом:
String hostAddress = inetaddress.getHostAddress();
if (inetaddress instanceof Inet6Address) {
sp = new SocketPermission("[" + hostAddress + "]:" + port, action);
} else {
sp = new SocketPermission(hostAddress + ":" + port, action);
}
или
String host = url.getHost();
sp = new SocketPermission(host + ":" + port, action);
Также допустима полная несжатая форма буквального IPv6-адреса.
Порт или диапазон портов указывать необязательно. Спецификация порта вида «N-», где N — номер порта, означает все порты с номером N и выше, а спецификация вида «-N» указывает все порты с номером N и ниже. Специальное значение порта 0 обозначает весь диапазон эфемерных портов. Это фиксированный диапазон портов, из которого система может выделять динамические порты. Фактический диапазон может зависеть от системы.
Возможные способы подключения к узлу:
accept connect listen resolveДействие «listen» имеет смысл только при использовании с «localhost» и означает возможность привязки к указанному порту. Действие «resolve» подразумевается при наличии любого другого действия. Действие «resolve» относится к поиску имени узла/IP-адреса в службе имён.
Перед обработкой строка действий преобразуется в нижний регистр.
- Примечание к API:
- Это разрешение нельзя использовать для управления доступом к ресурсам, поскольку диспетчер безопасности больше не поддерживается.
- Появился в версии:
- 1.2
- Внешние спецификации
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
SocketPermission |
Создаёт новый объект SocketPermission с указанными действиями. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Сравнивает два объекта SocketPermission на равенство. |
String |
getActions() |
Возвращает каноническое строковое представление действий. |
int |
hashCode() |
Возвращает значение хеш-кода этого объекта. |
boolean |
implies |
Проверяет, подразумевает ли этот объект разрешения на использование сокета указанное разрешение. |
PermissionCollection |
newPermissionCollection() |
Возвращает новый объект PermissionCollection для хранения объектов SocketPermission. |
Методы, объявленные в классе Permission
checkGuard, getName, toString
Подробное описание конструкторов
SocketPermission
public SocketPermission(String host, String action)
Чтобы указать локальный компьютер, используйте «localhost» в качестве узла. Также обратите внимание: пустая строка узла ("") эквивалентна «localhost».
Параметр actions содержит разделённый запятыми список действий, предоставленных для указанного узла (и порта или портов). Возможные действия: «connect», «listen», «accept», «resolve» или любая их комбинация. «resolve» автоматически добавляется, если указано любое из трёх других действий.
Примеры создания экземпляров SocketPermission:
nr = new SocketPermission("www.example.com", "connect");
nr = new SocketPermission("www.example.com:80", "connect");
nr = new SocketPermission("*.example.com", "connect");
nr = new SocketPermission("*.edu", "resolve");
nr = new SocketPermission("204.160.241.0", "connect");
nr = new SocketPermission("localhost:1024-65535", "listen");
nr = new SocketPermission("204.160.241.0:1024-65535", "connect");
- Параметры:
-
host— имя узла или IP-адрес компьютера, при необходимости с двоеточием, за которым следует порт или диапазон портов. -
action— строка действий. - Вызывает исключение:
-
NullPointerException— если какой-либо параметр равен null -
IllegalArgumentException— если форматhostнедопустим или строкаactionпуста, имеет неправильный формат либо содержит действие, не входящее в список допустимых действий
Подробное описание методов
implies
public boolean implies(Permission p)
В частности, этот метод сначала проверяет, выполняются ли все следующие условия (и возвращает false, если хотя бы одно из них не выполняется):
- p является экземпляром SocketPermission,
- действия p являются собственным подмножеством действий этого объекта, и
- диапазон портов p входит в этот диапазон портов. Примечание: диапазон портов игнорируется, если p содержит только действие «resolve».
implies проверяет каждое из следующих условий по порядку и возвращает true, если соответствующее условие выполняется: - Если этот объект был инициализирован одним IP-адресом, и один из IP-адресов p совпадает с IP-адресом этого объекта.
- Если этот объект является доменом с подстановочным знаком (например, *.example.com), а каноническое имя p (имя без предшествующего символа *) заканчивается каноническим именем узла этого объекта. Например, *.example.com подразумевает *.foo.example.com.
- Если этот объект был инициализирован не одним IP-адресом, а один из IP-адресов этого объекта совпадает с одним из IP-адресов p.
- Если это каноническое имя совпадает с каноническим именем p.
implies возвращает false.- Определено в:
-
impliesв классеPermission - Параметры:
-
p— разрешение для проверки. - Возвращает:
- true, если указанное разрешение подразумевается этим объектом, иначе false.
equals
public boolean equals(Object obj)
- Определено в:
-
equalsв классеPermission - Параметры:
-
obj— объект, который нужно сравнить с этим объектом на равенство. - Возвращает:
- true, если obj является SocketPermission и имеет те же имя узла, диапазон портов и действия, что и этот объект SocketPermission. Однако диапазон портов не учитывается при сравнении, если obj содержит только действие «resolve».
- См. также:
hashCode
public int hashCode()
- Определено в:
-
hashCodeв классеPermission - Возвращает:
- значение хеш-кода этого объекта.
- См. также:
getActions
public String getActions()
- Определено в:
-
getActionsв классеPermission - Возвращает:
- каноническое строковое представление действий.
newPermissionCollection
public PermissionCollection newPermissionCollection()
Объекты SocketPermission должны храниться так, чтобы их можно было добавлять в коллекцию в любом порядке, при этом метод implies класса PermissionCollection должен быть реализован эффективным и согласованным образом.
- Переопределяет:
-
newPermissionCollectionв классеPermission - Возвращает:
- новый объект PermissionCollection, подходящий для хранения объектов SocketPermission.
© 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/SocketPermission.html