Spec-Zone.ru › OpenJDK 25

Класс SocketPermission

java.lang.Object
java.security.Permission
java.net.SocketPermission
Все реализованные интерфейсы:
Serializable, Guard
public final class SocketPermission extends Permission implements Serializable
Этот класс представляет доступ к сети через сокеты. SocketPermission состоит из спецификации узла и набора «действий», определяющих способы подключения к этому узлу. Узел задаётся как
    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
Внешние спецификации
  • RFC 2732: формат буквальных IPv6-адресов в URL
См. также:
  • Permissions
  • SocketPermission

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

Конструктор Описание
SocketPermission(String host, String action)
Создаёт новый объект SocketPermission с указанными действиями.

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

Модификатор и тип Метод Описание
boolean equals(Object obj)
Сравнивает два объекта SocketPermission на равенство.
String getActions()
Возвращает каноническое строковое представление действий.
int hashCode()
Возвращает значение хеш-кода этого объекта.
boolean implies(Permission p)
Проверяет, подразумевает ли этот объект разрешения на использование сокета указанное разрешение.
PermissionCollection newPermissionCollection()
Возвращает новый объект PermissionCollection для хранения объектов SocketPermission.

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

checkGuard, getName, toString

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

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

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

SocketPermission

public SocketPermission(String host, String action)
Создаёт новый объект SocketPermission с указанными действиями. Узел указывается в виде DNS-имени или числового IP-адреса. При необходимости можно указать порт или диапазон портов (отделив их двоеточием от DNS-имени или IP-адреса).

Чтобы указать локальный компьютер, используйте «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)
Сравнивает два объекта SocketPermission на равенство.
Определено в:
equals в классе Permission
Параметры:
obj — объект, который нужно сравнить с этим объектом на равенство.
Возвращает:
true, если obj является SocketPermission и имеет те же имя узла, диапазон портов и действия, что и этот объект SocketPermission. Однако диапазон портов не учитывается при сравнении, если obj содержит только действие «resolve».
См. также:
  • Object.hashCode()
  • HashMap

hashCode

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

getActions

public String getActions()
Возвращает каноническое строковое представление действий. Всегда возвращает присутствующие действия в следующем порядке: connect, listen, accept, resolve.
Определено в:
getActions в классе Permission
Возвращает:
каноническое строковое представление действий.

newPermissionCollection

public PermissionCollection newPermissionCollection()
Возвращает новый объект PermissionCollection для хранения объектов SocketPermission.

Объекты SocketPermission должны храниться так, чтобы их можно было добавлять в коллекцию в любом порядке, при этом метод implies класса PermissionCollection должен быть реализован эффективным и согласованным образом.

Переопределяет:
newPermissionCollection в классе Permission
Возвращает:
новый объект PermissionCollection, подходящий для хранения объектов SocketPermission.

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по 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/SocketPermission.html

Spec-Zone.ru

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