Spec-Zone.ru › OpenJDK 17

Класс ServerSocketChannel

java.lang.Object
java.nio.channels.spi.AbstractInterruptibleChannel
java.nio.channels.SelectableChannel
java.nio.channels.spi.AbstractSelectableChannel
java.nio.channels.ServerSocketChannel
Все реализованные интерфейсы:
Closeable, AutoCloseable, Channel, InterruptibleChannel, NetworkChannel
public abstract class ServerSocketChannel extends AbstractSelectableChannel implements NetworkChannel
Выбираемый канал для сокетов прослушивания потокового типа.

Серверный сокет-канал создается путем вызова одного из методов open этого класса. Метод open без аргументов открывает серверный сокет-канал для сокета протокола Интернет. Метод open(ProtocolFamily) используется для открытия серверного сокета-канала для сокета указанной семейства протоколов. Невозможно создать канал для произвольного, уже существующего сокета. Недавно созданный серверный сокет-канал открыт, но еще не привязан. Попытка вызвать метод accept непривязанного серверного сокета-канала приведет к исключению NotYetBoundException. Серверный сокет-канал может быть привязан путем вызова одного из методов bind, определенных этим классом.

Параметры сокета настраиваются с помощью метода setOption. Серверные сокет-каналы для сокетов протокола Интернет поддерживают следующие параметры:

Параметры сокета
Имя параметра Описание
SO_RCVBUF Размер буфера приема сокета
SO_REUSEADDR Повторное использование адреса

Серверные сокет-каналы для сокетов домен Unix поддерживают:

Параметры сокета
Имя параметра Описание
SO_RCVBUF Размер буфера приема сокета

Также могут быть доступны дополнительные параметры (специфичные для реализации).

Серверные сокет-каналы безопасны для использования несколькими потоками одновременно.

С тех пор:
1.4

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

ServerSocketChannel(SelectorProvider provider)
Модификатор Конструктор Описание
protected
Инициализирует новый экземпляр этого класса.

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

Модификатор и тип Метод Описание
abstract SocketChannel accept()
Принимает подключение, установленное к сокету этого канала.
final ServerSocketChannel bind(SocketAddress local)
Привязывает сокет канала к локальному адресу и настраивает сокет для прослушивания подключений.
abstract ServerSocketChannel bind(SocketAddress local, int backlog)
Привязывает сокет канала к локальному адресу и настраивает сокет для прослушивания подключений.
abstract SocketAddress getLocalAddress()
Возвращает адрес сокета, к которому привязан сокет этого канала.
static ServerSocketChannel open()
Открывает серверный сокет-канал для сокета протокола Интернет.
static ServerSocketChannel open(ProtocolFamily family)
Открывает серверный сокет-канал.
abstract <T> ServerSocketChannel setOption(SocketOption<T> name, T value)
Устанавливает значение параметра сокета.
abstract ServerSocket socket()
Получает сокет сервера, связанный с этим каналом.
final int validOps()
Возвращает набор операций, определяющий поддерживаемые операции этого канала.

Методы, объявленные в классе java.nio.channels.spi.AbstractSelectableChannel

blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, register

Методы, объявленные в классе java.nio.channels.SelectableChannel

register

Методы, объявленные в классе java.nio.channels.spi.AbstractInterruptibleChannel

begin, close, end, isOpen

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Методы, объявленные в интерфейсе java.nio.channels.Channel

isOpen

Методы, объявленные в интерфейсе java.nio.channels.NetworkChannel

getOption, supportedOptions

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

ServerSocketChannel

protected ServerSocketChannel(SelectorProvider provider)
Инициализирует новый экземпляр этого класса.
Параметры:
provider - Поставщик, который создал этот канал

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

open

public static ServerSocketChannel open() throws IOException
Открывает канал серверного сокета для сокета протокола Интернета.

Новый канал создаётся путём вызова метода openServerSocketChannel системного по умолчанию объекта SelectorProvider.

Сокет нового канала изначально не привязан; он должен быть привязан к определённому адресу с помощью одного из методов сокета bind перед тем, как можно будет принимать соединения.

Возвращает:
Новый канал сокета
Исключения:
IOException - Если произошла ошибка ввода-вывода
См. также:
  • системное свойство java.net.preferIPv4Stack

open

public static ServerSocketChannel open(ProtocolFamily family) throws IOException
Открывает канал серверного сокета. Параметр family указывает protocol family сокета канала.

Новый канал создаётся путём вызова метода openServerSocketChannel(ProtocolFamily) системного по умолчанию объекта SelectorProvider.

Параметры:
family - Семейство протоколов
Возвращает:
Новый канал сокета
Исключения:
UnsupportedOperationException - Если указанное семейство протоколов не поддерживается. Например, если параметр задан как StandardProtocolFamily.INET6, но IPv6 не включён на платформе.
IOException - Если произошла ошибка ввода-вывода
С:
15
См. также:
  • системное свойство java.net.preferIPv4Stack

validOps

public final int validOps()
Возвращает набор операций, определяющих поддерживаемые операции этого канала.

Каналы серверных сокетов поддерживают только приём новых соединений, поэтому этот метод возвращает SelectionKey.OP_ACCEPT.

Установлено в:
validOps в классе SelectableChannel
Возвращает:
Набор допустимых операций

bind

public final ServerSocketChannel bind(SocketAddress local) throws IOException
Привязывает сокет канала к локальному адресу и настраивает сокет для прослушивания соединений.

Вызов этого метода эквивалентен следующему:

 bind(local, 0);
 
Установлено в:
bind в интерфейсе NetworkChannel
Параметры:
local - Локальный адрес для привязки сокета или null для привязки к автоматически назначенному адресу сокета
Возвращает:
Этот канал
Исключения:
AlreadyBoundException - Если сокет уже привязан
UnsupportedAddressTypeException - Если тип заданного адреса не поддерживается
ClosedChannelException - Если канал закрыт
IOException - Если произошла другая ошибка ввода-вывода
SecurityException - Если установлен менеджер безопасности и он запрещает операцию
С:
1.7
См. также:
  • NetworkChannel.getLocalAddress()

bind

public abstract ServerSocketChannel bind(SocketAddress local, int backlog) throws IOException
Привязывает сокет канала к локальному адресу и настраивает сокет для прослушивания соединений.

Этот метод используется для установления связи между сокетом и локальным адресом. Для сокетов протокола Интернета, после установления связи сокет остаётся привязанным до закрытия канала.

Параметр backlog — максимальное количество ожидающих соединений в сокете. Его точное значение зависит от реализации. В частности, реализация может установить максимальную длину или вообще игнорировать этот параметр. Если параметр backlog имеет значение 0, или отрицательное значение, используется реализация по умолчанию.

Прим. API:
Привязка канала серверного сокета для сокета Unix Domain создаёт файл, соответствующий пути к файлу в UnixDomainSocketAddress. Этот файл сохраняется после закрытия канала и должен быть удалён, прежде чем другой сокет сможет привязаться к тому же имени. Привязка к адресу null приводит к автоматической привязке сокета к уникальному файлу в системном временном каталоге. Сопутствующий файл сокета также сохраняется после закрытия канала. Его имя можно получить из локального адреса сокета канала.
Прим. реализации:
Каждая платформа определяет максимальную длину имени сокета Unix Domain, зависящую от реализации. Это ограничение применяется при привязке канала. Максимальная длина обычно близка к 100 байтам и не меньше. Это ограничение также применяется к каналам серверных сокетов с автоматической привязкой. Смотрите свойства сети Unix domain, которые могут использоваться для выбора временной директории, где создаются эти сокеты.
Параметры:
local - Адрес для привязки сокета или null для привязки к автоматически назначенному адресу сокета
backlog - Максимальное количество ожидающих соединений
Возвращает:
Этот канал
Исключения:
AlreadyBoundException - Если сокет уже привязан
UnsupportedAddressTypeException - Если тип указанного адреса не поддерживается
ClosedChannelException - Если этот канал закрыт
IOException - Если произошла другая ошибка ввода-вывода
SecurityException - Если установлен менеджер безопасности, и его метод checkListen запрещает операцию для адреса сокета протокола Интернета или для адреса сокета Unix domain, если он запрещает NetPermission("accessUnixDomainSocket").
С:
1.7

setOption

public abstract <T> ServerSocketChannel setOption(SocketOption<T> name, T value) throws IOException
Описание скопировано из интерфейса: NetworkChannel
Устанавливает значение параметра сокета.
Установлено в:
setOption в интерфейсе NetworkChannel
Тип параметров:
T - Тип значения параметра сокета
Параметры:
name - Параметр сокета
value - Значение параметра сокета. Значение null может быть допустимым значением для некоторых параметров сокета.
Возвращает:
Этот канал
Исключения:
UnsupportedOperationException - Если параметр сокета не поддерживается этим каналом
IllegalArgumentException - Если значение не является допустимым значением для этого параметра сокета
ClosedChannelException - Если этот канал закрыт
IOException - Если произошла ошибка ввода-вывода
С:
1.7
См. также:
  • StandardSocketOptions

socket

public abstract ServerSocket socket()
Возвращает серверный сокет, связанный с этим каналом.

Возвращаемый объект не будет объявлять никаких публичных методов, не объявленных в классе ServerSocket.

Возвращает:
Серверный сокет, связанный с этим каналом
Исключения:
UnsupportedOperationException - Если сокет канала не является сокетом протокола Интернета

accept

public abstract SocketChannel accept() throws IOException
Принимает подключение, установленное к сокету данного канала.

Если этот канал находится в режиме без блокировки, то этот метод немедленно вернёт null если нет ожидающих подключений. В противном случае он будет заблокирован до тех пор, пока новое подключение не станет доступным или не произойдёт ошибка ввода-вывода.

Сокет-канал, возвращаемый этим методом, если таковой есть, будет в режиме блокировки независимо от режима блокировки этого канала.

Если привязан к адресу сокета протокола Интернета, этот метод выполняет точно такие же проверки безопасности, как метод accept класса ServerSocket. То есть, если установлена система безопасности, то для каждого нового подключения этот метод проверяет, разрешает ли система безопасности адрес и номер порта удалённого конца подключения с помощью метода checkAccept. Если привязан к адресу сокета доменного пространства Unix, этот метод проверяет NetPermission("accessUnixDomainSocket").

Возвращает:
Сокет-канал для нового подключения или null если этот канал находится в режиме без блокировки и нет доступного подключения для принятия
Бросает:
ClosedChannelException - Если этот канал закрыт
AsynchronousCloseException - Если другой поток закрывает этот канал, пока операция accept находится в процессе
ClosedByInterruptException - Если другой поток прерывает текущий поток, пока операция accept находится в процессе, тем самым закрывая канал и устанавливая состояние прерывания текущего потока
NotYetBoundException - Если сокет данного канала ещё не привязан
SecurityException - Если установлена система безопасности и этот канал привязан к InetSocketAddress и система безопасности отказывается предоставить доступ к удалённому концу нового подключения, или если этот канал привязан к UnixDomainSocketAddress и система безопасности отказывается в NetPermission("accessUnixDomainSocket")
IOException - Если происходит какая-либо другая ошибка ввода-вывода

getLocalAddress

public abstract SocketAddress getLocalAddress() throws IOException
Возвращает адрес сокета, к которому привязан сокет этого канала.

Если канал bound к адресу сокета протокола Интернета, то возвращаемое значение от этого метода имеет тип InetSocketAddress. Если установлена система безопасности, её метод checkConnect вызывается с локальным адресом и -1 в качестве аргументов, чтобы проверить, разрешена ли операция. Если операция не разрешена, возвращается SocketAddress представляющая loopback адрес и локальный порт сокета канала.

Если канал привязан к адресу сокета доменного пространства Unix, адрес сокета является UnixDomainSocketAddress. Если установлена система безопасности, её метод checkPermission вызывается с NetPermission ("accessUnixDomainSocket"). Если операция не разрешена, возвращается безымянный UnixDomainSocketAddress.

Определено в:
getLocalAddress в интерфейсе NetworkChannel
Возвращает:
Адрес, к которому привязан сокет, или SocketAddress представляющую обратный адрес или пустой путь, если доступ запрещён системой безопасности, или null если сокет канала не привязан
Бросает:
ClosedChannelException - Если канал закрыт
IOException - Если произошла ошибка ввода-вывода

© 1993, 2021, 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/17/docs/api/java.base/java/nio/channels/ServerSocketChannel.html

Spec-Zone.ru

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