Spec-Zone.ru › OpenJDK 27

Класс 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()
Возвращает набор операций, указывающий операции, поддерживаемые этим каналом.

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

blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, register
Модификатор и тип Метод Описание
final Object blockingLock()
Возвращает объект, на котором синхронизируются методы configureBlocking и register.
final SelectableChannel configureBlocking(boolean block)
Изменяет режим блокировки этого канала.
protected final void implCloseChannel()
Закрывает этот канал.
protected abstract void implCloseSelectableChannel()
Закрывает этот выбираемый канал.
protected abstract void implConfigureBlocking(boolean block)
Изменяет режим блокировки этого канала.
final boolean isBlocking()
Указывает, будет ли каждая операция ввода-вывода в этом канале блокироваться до ее завершения.
final boolean isRegistered()
Указывает, зарегистрирован ли этот канал в данный момент в каких-либо селекторах.
final SelectionKey keyFor(Selector sel)
Возвращает ключ, представляющий регистрацию канала в указанном селекторе.
final SelectorProvider provider()
Возвращает поставщика, создавшего этот канал.
final SelectionKey register(Selector sel, int ops, Object att)
Регистрирует этот канал в указанном селекторе и возвращает ключ выбора.

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

register
Модификатор и тип Метод Описание
final SelectionKey register(Selector sel, int ops)
Регистрирует этот канал в указанном селекторе и возвращает ключ выбора.

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

begin, close, end, isOpen
Модификатор и тип Метод Описание
protected final void begin()
Отмечает начало операции ввода-вывода, которая может блокироваться неограниченно долго.
final void close()
Закрывает этот канал.
protected final void end(boolean completed)
Отмечает завершение операции ввода-вывода, которая может блокироваться неограниченно долго.
final boolean isOpen()
Указывает, открыт ли этот канал.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарело, подлежит удалению: этот элемент API может быть удален в будущей версии.
Финализация устарела и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает значение хеш-кода этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или прерывания, либо до истечения заданного времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или прерывания, либо до истечения заданного времени.

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

getOption, supportedOptions
Модификатор и тип Метод Описание
<T> T getOption(SocketOption<T> name)
Возвращает значение параметра сокета.
Set<SocketOption<?>> 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 — Если возникает другая ошибка ввода-вывода
Начиная с:
1.7
См. также:
  • NetworkChannel.getLocalAddress()

bind

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

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

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

Примечание API:
Привязка канала серверного сокета для сокета домена Unix создает файл, соответствующий пути к файлу в UnixDomainSocketAddress. Этот файл сохраняется после закрытия канала, и его необходимо удалить, прежде чем другой сокет сможет привязаться к тому же имени. Привязка к адресу null приводит к тому, что сокет автоматически привязывается к уникальному файлу в системном временном каталоге. Соответствующий файл сокета также сохраняется после закрытия канала. Его имя можно получить из локального адреса сокета канала.
Примечание по реализации:
Каждая платформа устанавливает зависящее от реализации максимальное ограничение длины имени сокета домена Unix. Это ограничение применяется при привязке канала. Максимальная длина обычно близка к 100 байтам и, как правило, не меньше этого значения. Ограничение также применяется к автоматически привязываемым каналам серверных сокетов. См. свойства сетевого взаимодействия домена Unix, с помощью которых можно выбрать временный каталог для создания этих сокетов.
Параметры:
local — Адрес для привязки сокета или null для привязки к автоматически назначенному адресу сокета
backlog — Максимальное количество ожидающих подключений
Возвращает:
Этот канал
Выбрасывает:
AlreadyBoundException — Если сокет уже привязан
UnsupportedAddressTypeException — Если тип указанного адреса не поддерживается
ClosedChannelException — Если этот канал закрыт
IOException — Если возникает другая ошибка ввода-вывода
Начиная с:
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, если ожидающих подключений нет. В противном случае он будет ждать неограниченно долго, пока не станет доступно новое подключение или не произойдет ошибка ввода-вывода.

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

Возвращает:
Канал сокета для нового подключения или null, если этот канал работает в неблокирующем режиме и нет доступного подключения для приема
Выбрасывает:
ClosedChannelException — Если этот канал закрыт
AsynchronousCloseException — Если другой поток закрывает этот канал во время выполнения операции accept
ClosedByInterruptException — Если другой поток прерывает текущий поток во время выполнения операции accept, закрывая тем самым канал и устанавливая статус прерывания текущего потока
NotYetBoundException — Если сокет этого канала еще не привязан
IOException — Если возникает другая ошибка ввода-вывода

getLocalAddress

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

Если канал bound к адресу сокета интернет-протокола, значение, возвращаемое этим методом, имеет тип InetSocketAddress.

Если канал привязан к адресу сокета домена Unix, адрес сокета является объектом UnixDomainSocketAddress.

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, способы обхода проблем и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, 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.

Spec-Zone.ru

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