Класс ServerSocket

Все реализуемые интерфейсы:
Closeable, AutoCloseable
Прямые известные подклассы:
SSLServerSocket
public class ServerSocket
extends Object
implements Closeable

Этот класс реализует серверные сокеты. Серверный сокет ожидает запросы из сети. Он выполняет некоторую операцию на основе этого запроса и, возможно, возвращает результат запросившему.

Фактическая работа серверного сокета выполняется экземпляром класса SocketImpl. Приложение может изменить фабрику сокетов, которая создаёт реализацию сокета, чтобы настроить себя на создание сокетов, соответствующих локальному брандмауэру.

С тех пор:
1.0
См. также:
SocketImpl, setSocketFactory(java.net.SocketImplFactory), ServerSocketChannel

Конструкторы

Конструктор Описание
ServerSocket()

Создаёт не привязанный серверный сокет.

ServerSocket​(int port)

Создаёт серверный сокет, привязанный к указанному порту.

ServerSocket​(int port, int backlog)

Создаёт серверный сокет и привязывает его к указанному локальному номеру порта с указанным значением backlog.

ServerSocket​(int port, int backlog, InetAddress bindAddr)

Создаёт сервер с указанным портом, значением listen backlog и локальным IP-адресом для привязки.

Методы

Модификатор и тип Метод Описание
Socket accept()

Ожидает подключения к этому сокету и принимает его.

void bind​(SocketAddress endpoint)

Привязывает ServerSocket к конкретному адресу (IP-адресу и номеру порта).

void bind​(SocketAddress endpoint, int backlog)

Привязывает ServerSocket к конкретному адресу (IP-адресу и номеру порта).

void close()

Закрывает этот сокет.

ServerSocketChannel getChannel()

Возвращает уникальный объект ServerSocketChannel, связанный с этим сокетом, если таковой имеется.

InetAddress getInetAddress()

Возвращает локальный адрес этого серверного сокета.

int getLocalPort()

Возвращает номер порта, на котором прослушивает этот сокет.

SocketAddress getLocalSocketAddress()

Возвращает адрес конечной точки, к которой привязан этот сокет.

<T> T getOption​(SocketOption<T> name)

Возвращает значение параметра сокета.

int getReceiveBufferSize()

Получает значение параметра SO_RCVBUF для этого ServerSocket, то есть предлагаемый размер буфера, который будет использоваться для сокетов, принятых от этого ServerSocket.

boolean getReuseAddress()

Проверяет, включен ли параметр SO_REUSEADDR.

int getSoTimeout()

Извлекает значение для SO_TIMEOUT. 0 возвращает, что параметр отключен (т.е. таймаут бесконечен).

protected void implAccept​(Socket s)

Подклассы ServerSocket используют этот метод для переопределения accept(), чтобы возвращать свой собственный подкласс сокета.

boolean isBound()

Возвращает состояние привязки ServerSocket.

boolean isClosed()

Возвращает состояние закрытия ServerSocket.

<T> ServerSocket setOption​(SocketOption<T> name, T value)

Устанавливает значение параметра сокета.

void setPerformancePreferences​(int connectionTime, int latency, int bandwidth)

Устанавливает предпочтения производительности для этого ServerSocket.

void setReceiveBufferSize​(int size)

Устанавливает значение по умолчанию для параметра SO_RCVBUF для сокетов, принятых от этого ServerSocket.

void setReuseAddress​(boolean on)

Включает/отключает параметр сокета SO_REUSEADDR.

static void setSocketFactory​(SocketImplFactory fac)

Устанавливает фабрику реализации серверного сокета для приложения.

void setSoTimeout​(int timeout)

Включает/отключает SO_TIMEOUT со указанным таймаутом в миллисекундах.

Set<SocketOption<?>> supportedOptions()

Возвращает набор параметров сокета, поддерживаемых этим серверным сокетом.

String toString()

Возвращает адрес реализации и порт реализации этого сокета в виде String.

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

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

Конструкторы

ServerSocket

public ServerSocket()
             throws IOException

Создаёт серверный сокет без привязки.

Исключения:
IOException - Ошибка ввода-вывода при открытии сокета.

ServerSocket

public ServerSocket(int port)
             throws IOException

Создаёт серверный сокет, привязанный к указанному порту. Значение 0 для номера порта означает, что номер порта будет автоматически распределён, обычно из диапазона временных портов. Этот номер порта можно получить, вызвав getLocalPort.

Максимальная длина очереди входящих соединений (запрос на подключение) установлена в 50. Если входящее соединение поступает, когда очередь заполнена, соединение отклоняется.

Если приложение указало фабрику серверных сокетов, метод createSocketImpl этой фабрики вызывается для создания фактической реализации сокета. В противном случае создаётся «обычный» сокет.

Если существует менеджер безопасности, его метод checkListen вызывается с аргументом port, чтобы убедиться в разрешении операции. Это может привести к исключению SecurityException.

Параметры:
port - номер порта или 0, чтобы использовать автоматически распределённый номер порта.
Исключения:
IOException - если при открытии сокета происходит ошибка ввода-вывода.
SecurityException - если существует менеджер безопасности, и его метод checkListen не разрешает операцию.
IllegalArgumentException - если параметр порта находится вне допустимого диапазона, который составляет от 0 до 65535 включительно.
См. также:
SocketImpl, SocketImplFactory.createSocketImpl(), setSocketFactory(java.net.SocketImplFactory), SecurityManager.checkListen(int)

ServerSocket

public ServerSocket(int port,
                    int backlog)
             throws IOException

Создаёт серверный сокет и привязывает его к указанному локальному номеру порта с указанной длиной очереди ожидающих подключений. Значение 0 для номера порта означает, что номер порта будет автоматически распределён, обычно из диапазона временных портов. Этот номер порта можно получить, вызвав getLocalPort.

Максимальная длина очереди входящих соединений (запрос на подключение) установлена в параметре backlog. Если входящее соединение поступает, когда очередь заполнена, соединение отклоняется.

Если приложение указало фабрику серверных сокетов, метод createSocketImpl этой фабрики вызывается для создания фактической реализации сокета. В противном случае создаётся «обычный» сокет.

Если существует менеджер безопасности, его метод checkListen вызывается с аргументом port, чтобы убедиться в разрешении операции. Это может привести к исключению SecurityException. Аргумент backlog – запрашиваемая максимальная длина очереди ожидающих подключений к сокету. Его точное значение зависит от реализации. В частности, реализация может установить максимальную длину или игнорировать параметр. Указанное значение должно быть больше 0. Если оно меньше или равно 0, будет использоваться значение по умолчанию, зависящее от реализации.

Параметры:
port - номер порта или 0, чтобы использовать автоматически распределённый номер порта.
backlog - запрашиваемая максимальная длина очереди входящих соединений.
Исключения:
IOException - если при открытии сокета происходит ошибка ввода-вывода.
SecurityException - если существует менеджер безопасности, и его метод checkListen не разрешает операцию.
IllegalArgumentException - если параметр порта находится вне допустимого диапазона, который составляет от 0 до 65535 включительно.
См. также:
SocketImpl, SocketImplFactory.createSocketImpl(), setSocketFactory(java.net.SocketImplFactory), SecurityManager.checkListen(int)

ServerSocket

public ServerSocket(int port,
                    int backlog,
                    InetAddress bindAddr)
             throws IOException

Создаёт сервер с указанным портом, длиной очереди подключений и локальным IP-адресом для привязки. Аргумент bindAddr может использоваться на многоадресной машине для ServerSocket, который будет принимать только запросы на подключение к одному из его адресов. Если bindAddr равен null, сервер будет принимать подключения ко всем локальным адресам. Порт должен быть в диапазоне от 0 до 65535 включительно. Значение 0 для номера порта означает, что номер порта будет автоматически распределён, обычно из диапазона временных портов. Этот номер порта можно получить, вызвав getLocalPort.

Если существует менеджер безопасности, этот метод вызывает его метод checkListen с аргументом port, чтобы убедиться в разрешении операции. Это может привести к исключению SecurityException. Аргумент backlog – запрашиваемая максимальная длина очереди ожидающих подключений к сокету. Его точное значение зависит от реализации. В частности, реализация может установить максимальную длину или игнорировать параметр. Указанное значение должно быть больше 0. Если оно меньше или равно 0, будет использоваться значение по умолчанию, зависящее от реализации.

Параметры:
port - номер порта или 0, чтобы использовать автоматически распределённый номер порта.
backlog - запрашиваемая максимальная длина очереди входящих соединений.
bindAddr - локальный InetAddress, к которому будет привязан сервер
Исключения:
SecurityException - если существует менеджер безопасности, и его метод checkListen не разрешает операцию.
IOException - если при открытии сокета происходит ошибка ввода-вывода.
IllegalArgumentException - если параметр порта находится вне допустимого диапазона, который составляет от 0 до 65535 включительно.
С:
1.1
См. также:
SocketOptions, SocketImpl, SecurityManager.checkListen(int)

Методы

bind

public void bind(SocketAddress endpoint)
          throws IOException

Связывает сокет с указанным адресом (IP-адрес и номер порта).

Если адрес является null, тогда система выберет свободный порт и действительный локальный адрес для привязки сокета.

Параметры:
endpoint - IP-адрес и номер порта для привязки.
Исключения:
IOException - если операция привязки не удалась или сокет уже привязан.
SecurityException - если присутствует SecurityManager и его метод checkListen не разрешает операцию.
IllegalArgumentException - если тип SocketAddress не поддерживается данным сокетом
С тех пор:
1.4

bind

public void bind(SocketAddress endpoint,
                 int backlog)
          throws IOException

Связывает сокет с указанным адресом (IP-адрес и номер порта).

Если адрес является null, тогда система выберет свободный порт и действительный локальный адрес для привязки сокета.

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

Параметры:
endpoint - IP-адрес и номер порта для привязки.
backlog - запрашиваемая максимальная длина очереди входящих подключений.
Исключения:
IOException - если операция привязки не удалась или сокет уже привязан.
SecurityException - если присутствует SecurityManager и его метод checkListen не разрешает операцию.
IllegalArgumentException - если тип SocketAddress не поддерживается данным сокетом
С тех пор:
1.4

getInetAddress

public InetAddress getInetAddress()

Возвращает локальный адрес данного серверного сокета.

Если сокет был привязан до вызова closed, метод продолжит возвращать локальный адрес после закрытия сокета.

Если установлен менеджер безопасности, его метод checkConnect вызывается с локальным адресом и -1 в качестве аргументов, чтобы проверить, разрешена ли операция. Если операция не разрешена, возвращается адрес loopback.

Возвращает:
адрес, к которому привязан сокет, или адрес обратной связи, если доступ к нему запрещён менеджером безопасности, или null если сокет не привязан.
См. также:
SecurityManager.checkConnect(java.lang.String, int)

getLocalPort

public int getLocalPort()

Возвращает номер порта, на котором прослушивает этот сокет.

Если сокет был привязан до вызова closed, метод продолжит возвращать номер порта после закрытия сокета.

Возвращает:
номер порта, на котором прослушивает сокет, или -1, если сокет ещё не привязан.

getLocalSocketAddress

public SocketAddress getLocalSocketAddress()

Возвращает адрес конечной точки, к которой привязан данный сокет.

Если сокет был привязан до вызова closed, метод продолжит возвращать адрес конечной точки после закрытия сокета.

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

Возвращает:
объект SocketAddress представляющий локальную конечную точку этого сокета, или SocketAddress представляющий адрес обратной связи, если доступ к нему запрещён менеджером безопасности, или null если сокет ещё не привязан.
С тех пор:
1.4
См. также:
getInetAddress(), getLocalPort(), bind(SocketAddress), SecurityManager.checkConnect(java.lang.String, int)

accept

public Socket accept()
              throws IOException

Ожидает подключения к этому сокету и принимает его. Метод блокируется до тех пор, пока подключение не будет установлено.

Создаётся новый сокет s. Если установлен менеджер безопасности, метод checkAccept менеджера вызывается с s.getInetAddress().getHostAddress() и s.getPort() в качестве аргументов, чтобы убедиться, что операция разрешена. В результате может быть выброшено исключение SecurityException.

Возвращает:
новый сокет
Исключения:
IOException - если при ожидании подключения произошла ошибка ввода-вывода.
SecurityException - если менеджер безопасности существует и его метод checkAccept не разрешает операцию.
SocketTimeoutException - если для этого сокета был установлен таймаут с помощью setSoTimeout, и таймаут истек.
IllegalBlockingModeException - если у данного сокета есть связанный канал, канал находится в режиме без блокировки, и нет подключения, готового к приёму
См. также:
SecurityManager.checkAccept(java.lang.String, int)

implAccept

protected final void implAccept(Socket s)
                         throws IOException

Подклассы ServerSocket используют этот метод для переопределения accept(), чтобы вернуть свой собственный подкласс сокета. Например, FooServerSocket обычно передаёт этот метод пустому FooSocket. После возврата из implAccept сокет FooSocket будет подключён к клиенту.

Параметры:
s - сокет
Исключения:
IllegalBlockingModeException - если у данного сокета есть связанный канал, и канал находится в режиме без блокировки
IOException - если при ожидании подключения произошла ошибка ввода-вывода.
С тех пор:
1.1

close

public void close()
           throws IOException

Закрывает этот сокет. Любой поток, который в данный момент заблокирован в accept(), выбросит исключение SocketException.

Если у этого сокета есть связанный канал, то канал также закрывается.

Определено в:
close в интерфейсе AutoCloseable
Определено в:
close в интерфейсе Closeable
Исключения:
IOException - если при закрытии сокета произошла ошибка ввода-вывода.

getChannel

public ServerSocketChannel getChannel()

Возвращает уникальный объект ServerSocketChannel, связанный с этим сокетом, если таковой имеется.

У серверного сокета будет канал только в том случае, если сам канал был создан с помощью метода ServerSocketChannel.open.

Возвращает:
серверный канал сокета, связанный с этим сокетом, или null если этот сокет не был создан для канала
С тех пор:
1.4

isBound

public boolean isBound()

Возвращает состояние привязки ServerSocket.

Возвращает:
true, если ServerSocket успешно привязан к адресу
С тех пор:
1.4

isClosed

public boolean isClosed()

Возвращает состояние закрытия ServerSocket.

Возвращает:
true, если сокет был закрыт
С тех пор:
1.4

setSoTimeout

public void setSoTimeout(int timeout)
                  throws SocketException

Включает/выключает SO_TIMEOUT с заданным таймаутом в миллисекундах. При установке ненулевого таймаута вызов accept() для этого ServerSocket будет блокироваться только на это время. Если таймаут истечёт, будет вызвано исключение java.net.SocketTimeoutException, хотя ServerSocket остаётся допустимым. Таймаут необходимо установить до выполнения блокирующей операции, чтобы он имел эффект. Таймаут должен быть > 0. Таймаут 0 интерпретируется как бесконечный таймаут.

Параметры:
timeout - заданный таймаут в миллисекундах
Исключения:
SocketException - если произошла ошибка в базовом протоколе, например, ошибка TCP.
С тех пор:
1.1
См. также:
getSoTimeout()

getSoTimeout

public int getSoTimeout()
                 throws IOException

Получает значение настройки SO_TIMEOUT. Возвращает 0, если опция отключена (т.е. таймаут бесконечен).

Возвращает:
значение SO_TIMEOUT
Исключения:
IOException - если произошла ошибка ввода-вывода
С тех пор:
1.1
См. также:
setSoTimeout(int)

setReuseAddress

public void setReuseAddress(boolean on)
                     throws SocketException

Включает/выключает опцию сокета SO_REUSEADDR.

Когда TCP-соединение закрывается, оно может оставаться в состоянии таймаута в течение некоторого времени после закрытия соединения (обычно это состояние TIME_WAIT или состояние ожидания 2MSL). Для приложений, использующих известный адрес сокета или порт, может быть невозможно привязать сокет к требуемому SocketAddress если существует соединение в состоянии таймаута, которое включает в себя адрес сокета или порт.

Включение SO_REUSEADDR перед привязкой сокета с помощью bind(SocketAddress) позволяет привязать сокет, даже если предыдущее соединение находится в состоянии таймаута.

При создании сокета начальное значение SO_REUSEADDR не определено. Приложения могут использовать getReuseAddress() для определения начального значения SO_REUSEADDR.

Поведение при включении или отключении SO_REUSEADDR после привязки сокета (см. isBound()) не определено.

Параметры:
on - нужно ли включить или отключить параметр сокета
Выбрасывает:
SocketException - если при включении или отключении параметра сокета SO_REUSEADDR произошла ошибка, или сокет закрыт.
С тех пор:
1.4
См. также:
getReuseAddress(), bind(SocketAddress), isBound(), isClosed()

getReuseAddress

public boolean getReuseAddress()
                        throws SocketException

Проверяет, включен ли параметр SO_REUSEADDR.

Возвращает:
значение, указывающее, включён ли параметр SO_REUSEADDR.
Выбрасывает:
SocketException - если в базовом протоколе произошла ошибка, например, ошибка TCP.
С тех пор:
1.4
См. также:
setReuseAddress(boolean)

toString

public String toString()

Возвращает адрес и порт реализации этого сокета в виде String.

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

Переопределяет:
toString в классе Object
Возвращает:
строковое представление этого сокета.

setSocketFactory

public static void setSocketFactory(SocketImplFactory fac)
                             throws IOException

Устанавливает фабрику реализации серверного сокета для приложения. Фабрика может быть установлена только один раз.

При создании нового серверного сокета приложением вызывается метод createSocketImpl фабрики реализации сокета для создания фактической реализации сокета.

Передача null в метод — это пустая операция, если фабрика еще не была установлена.

Если установлен менеджер безопасности, этот метод сначала вызывает метод checkSetFactory менеджера безопасности, чтобы убедиться, что операция разрешена. Это может привести к исключению SecurityException.

Параметры:
fac - нужная фабрика.
Выбрасывает:
IOException - если при установке фабрики сокета произошла ошибка ввода/вывода.
SocketException - если фабрика уже определена.
SecurityException - если менеджер безопасности существует и его метод checkSetFactory не разрешает операцию.
См. также:
SocketImplFactory.createSocketImpl(), SecurityManager.checkSetFactory()

setReceiveBufferSize

public void setReceiveBufferSize(int size)
                          throws SocketException

Устанавливает предлагаемое значение параметра SO_RCVBUF для сокетов, принятых от этого ServerSocket. Фактическое значение, установленное в принятом сокете, должно быть определено вызовом Socket.getReceiveBufferSize() после того, как сокет возвращён методом accept().

Значение параметра SO_RCVBUF используется как для установки размера внутреннего буфера приёма сокета, так и для установки размера TCP-окна приёма, которое передаётся удалённому узлу.

Можно изменить значение впоследствии, вызвав Socket.setReceiveBufferSize(int). Однако, если приложение хочет разрешить размер окна приёма, превышающий 64 КБ, как определено в RFC1323, то предложенное значение должно быть установлено в ServerSocket перед привязкой к локальному адресу. Это означает, что ServerSocket должен быть создан с конструктором без аргументов, затем вызван setReceiveBufferSize(), и, наконец, ServerSocket привязывается к адресу с помощью bind().

Если этого не сделать, ошибки не произойдёт, и размер буфера может быть установлен в запрошенное значение, но размер TCP-окна приёма в сокетах, принятых от этого ServerSocket, не будет больше 64 КБ.

Параметры:
size - размер, на который нужно установить размер буфера приёма. Это значение должно быть больше 0.
Выбрасывает:
SocketException - если в базовом протоколе произошла ошибка, например, ошибка TCP.
IllegalArgumentException - если значение равно 0 или отрицательно.
С тех пор:
1.4
См. также:
getReceiveBufferSize()

getReceiveBufferSize

public int getReceiveBufferSize()
                         throws SocketException

Получает значение параметра SO_RCVBUF для этого ServerSocket, то есть предлагаемый размер буфера, который будет использоваться для сокетов, принятых от этого ServerSocket.

Обратите внимание, что фактическое значение, установленное в принятом сокете, определяется вызовом Socket.getReceiveBufferSize().

Возвращает:
значение параметра SO_RCVBUF для этого Socket.
Выбрасывает:
SocketException - если в базовом протоколе произошла ошибка, например, ошибка TCP.
С тех пор:
1.4
См. также:
setReceiveBufferSize(int)

setPerformancePreferences

public void setPerformancePreferences(int connectionTime,
                                      int latency,
                                      int bandwidth)

Устанавливает предпочтения производительности для этого ServerSocket.

Сокеты по умолчанию используют протокол TCP/IP. Некоторые реализации могут предлагать альтернативные протоколы, которые имеют разные характеристики производительности, чем TCP/IP. Этот метод позволяет приложению выразить свои предпочтения относительно того, как следует учитывать эти компромиссы при выборе реализации из доступных протоколов.

Предпочтения производительности описываются тремя целыми числами, значения которых указывают на относительную важность короткого времени подключения, низкой задержки и высокой пропускной способности. Абсолютные значения целых чисел не имеют значения; для выбора протокола значения просто сравниваются, и большие значения указывают на более сильные предпочтения. Например, если приложение предпочитает короткое время подключения по сравнению как с низкой задержкой, так и с высокой пропускной способностью, то оно может вызвать этот метод со значениями (1, 0, 0). Если приложение предпочитает высокую пропускную способность по сравнению с низкой задержкой, а низкую задержку по сравнению с коротким временем подключения, то оно может вызвать этот метод со значениями (0, 1, 2).

Вызов этого метода после того, как этот сокет был привязан, не окажет никакого влияния. Это означает, что для использования этой возможности необходимо создать сокет с конструктором без аргументов.

Параметры:
connectionTime - целое число, выражающее относительную важность короткого времени подключения
latency - целое число, выражающее относительную важность низкой задержки
bandwidth - целое число, выражающее относительную важность высокой пропускной способности
С тех пор:
1.5

setOption

public <T> ServerSocket setOption(SocketOption<T> name,
                                  T value)
                           throws IOException

Устанавливает значение параметра сокета.

Параметры типов:
T - тип значения параметра сокета
Параметры:
name - параметр сокета
value - значение параметра сокета. Значение null может быть допустимым для некоторых параметров.
Возвращает:
этот ServerSocket
Выбрасывает:
UnsupportedOperationException - если серверный сокет не поддерживает параметр.
IllegalArgumentException - если значение не является допустимым для параметра.
IOException - если произошла ошибка ввода/вывода или сокет закрыт.
SecurityException - если установлен менеджер безопасности, и для параметра сокета требуется разрешение безопасности, и у вызывающего объекта нет требуемого разрешения. StandardSocketOptions не требуют никакого разрешения безопасности.
С тех пор:
9

getOption

public <T> T getOption(SocketOption<T> name)
                throws IOException

Возвращает значение параметра сокета.

Параметры типов:
T - тип значения параметра сокета
Параметры:
name - параметр сокета
Возвращает:
Значение параметра сокета.
Выбрасывает:
UnsupportedOperationException - если серверный сокет не поддерживает параметр.
IOException - если произошла ошибка ввода/вывода или сокет закрыт.
NullPointerException - если имя является null
SecurityException - если установлен менеджер безопасности, и для параметра сокета требуется разрешение безопасности, и у вызывающего объекта нет требуемого разрешения. StandardSocketOptions не требуют никакого разрешения безопасности.
С тех пор:
9

supportedOptions

public Set<SocketOption<?>> supportedOptions()

Возвращает набор параметров сокета, поддерживаемых этим серверным сокетом. Этот метод будет продолжать возвращать набор параметров даже после закрытия сокета.

Возвращает:
Набор параметров сокета, поддерживаемых этим сокетом. Этот набор может быть пустым, если SocketImpl сокета не может быть создан.
С тех пор:
9

© 1993, 2020, 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/11/docs/api/java.base/java/net/ServerSocket.html

Spec-Zone .ru
спецификации, руководства, описания, API