Spec-Zone.ru › OpenJDK 25

Класс 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

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

register

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

begin, close, end, isOpen

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

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

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

isOpen

Методы, объявленные в интерфейсе 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 - Если возникает другая ошибка ввода-вывода
Начиная с версии:
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, 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/nio/channels/ServerSocketChannel.html

Spec-Zone.ru

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