Spec-Zone.ru › OpenJDK 24

Класс 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 - Если произошла другая ошибка ввода-вывода
С:
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 - Если произошла другая ошибка ввода-вывода
С:
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 - Если произошла другая ошибка ввода-вывода
END_OF_DOCUMENT_MARKER

getLocalAddress

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

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

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

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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/nio/channels/ServerSocketChannel.html

Spec-Zone.ru

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