Spec-Zone .ru
спецификации, руководства, описания, API
|
public class ServerSocket extends Object implements Closeable
Фактическая работа сокета сервера выполняется экземпляром SocketImpl
class. Приложение может изменить фабрику сокета, которая создает реализацию сокета, чтобы сконфигурировать себя, чтобы создать сокеты, соответствующие локальному брандмауэру.
SocketImpl
, setSocketFactory(java.net.SocketImplFactory)
, ServerSocketChannel
Конструктор и Описание |
---|
ServerSocket()
Создает несвязанный сокет сервера.
|
ServerSocket(int port)
Создает сокет сервера, связанный с указанным портом.
|
ServerSocket(int port, int backlog)
Создает сокет сервера и связывает это с указанным локальным номером порта, с указанным отставанием.
|
ServerSocket(int port, int backlog, InetAddress bindAddr)
Создайте сервер с указанным портом, слушайте отставание, и локальный IP-адрес, чтобы связать с.
|
Модификатор и Тип | Метод и Описание |
---|---|
Сокет |
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()
Возвращает адрес конечной точки, этот сокет связывается с, или
null если это еще не связывается. |
int |
getReceiveBufferSize()
Получает значение
SO_RCVBUF опция для этого ServerSocket, который является предложенным размером буфера, который будет использоваться для Сокетов, принятых от этого ServerSocket. |
boolean |
getReuseAddress()
Тесты, если
SO_REUSEADDR включается. |
int |
getSoTimeout()
Получите установку для
SO_TIMEOUT . |
protected void |
implAccept(Socket s)
Подклассы ServerSocket используют этот метод, чтобы переопределить, принимают (), чтобы возвратить их собственный подкласс сокета.
|
boolean |
isBound()
Возвращает обязательное состояние ServerSocket.
|
boolean |
isClosed()
Возвращает закрытое состояние ServerSocket.
|
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 с указанным тайм-аутом, в миллисекундах. |
Строка |
toString()
Возвращает адрес реализации и порт реализации этого сокета как a
String . |
public ServerSocket() throws IOException
IOException
- Ошибка IO, открывая сокет.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)
public ServerSocket(int port, int backlog) throws IOException
0
средства, что номер порта автоматически выделяется, обычно от эфемерного диапазона порта. Этот номер порта может тогда быть получен, вызывая getLocalPort
. Максимальная длина очереди для входящих индикаций соединения (запрос, чтобы соединиться) устанавливается в backlog
параметр. Если индикация соединения прибывает, когда очередь полна, соединению отказывают.
Если приложение определило, что сервер снабжает фабрику сокетом, что фабрика createSocketImpl
метод вызывают, чтобы создать фактическую реализацию сокета. Иначе "простой" сокет создается.
Если есть менеджер безопасности, checkListen
метод вызывают с port
параметр как его параметр, чтобы гарантировать работу позволяется. Это могло привести к SecurityException. backlog
параметром является требуемое максимальное количество соединений на ожидании на сокете. Его точная семантика является определенной реализацией. В частности реализация может наложить максимальную длину или может хотеть игнорировать параметр altogther. Обеспеченное значение должно быть больше чем 0
. Если это меньше чем или равно 0
, тогда реализация определенное значение по умолчанию будет использоваться.
port
- номер порта, или 0
использовать номер порта, который автоматически выделяется.backlog
- требуемая максимальная длина очереди входящих соединений.IOException
- если ошибка ввода-вывода происходит, открывая сокет.SecurityException
- если менеджер безопасности существует и checkListen
метод не позволяет работу.IllegalArgumentException
- если параметр порта вне указанного диапазона допустимых значений порта, который является между 0 и 65535, включительно.SocketImpl
, SocketImplFactory.createSocketImpl()
, setSocketFactory(java.net.SocketImplFactory)
, SecurityManager.checkListen(int)
public ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException
0
средства, что номер порта автоматически выделяется, обычно от эфемерного диапазона порта. Этот номер порта может тогда быть получен, вызывая getLocalPort
. Если есть менеджер безопасности, это вызовы метода checkListen
метод с port
параметр как его параметр, чтобы гарантировать работу позволяется. Это могло привести к SecurityException. backlog
параметром является требуемое максимальное количество соединений на ожидании на сокете. Его точная семантика является определенной реализацией. В частности реализация может наложить максимальную длину или может хотеть игнорировать параметр altogther. Обеспеченное значение должно быть больше чем 0
. Если это меньше чем или равно 0
, тогда реализация определенное значение по умолчанию будет использоваться.
port
- номер порта, или 0
использовать номер порта, который автоматически выделяется.backlog
- требуемая максимальная длина очереди входящих соединений.bindAddr
- локальный InetAddress сервер свяжет сSecurityException
- если менеджер безопасности существует и checkListen
метод не позволяет работу.IOException
- если ошибка ввода-вывода происходит, открывая сокет.IllegalArgumentException
- если параметр порта вне указанного диапазона допустимых значений порта, который является между 0 и 65535, включительно.SocketOptions
, SocketImpl
, SecurityManager.checkListen(int)
public void bind(SocketAddress endpoint) throws IOException
ServerSocket
к определенному адресу (IP-адрес и номер порта). Если адрес null
, тогда система поднимет эфемерный порт и допустимый локальный адрес, чтобы связать сокет.
endpoint
- IP-адрес & номер порта, чтобы связать с.IOException
- если связывать работа перестала работать, или если сокет уже связывается.SecurityException
- если a SecurityManager
присутствует и checkListen
метод не позволяет работу.IllegalArgumentException
- если конечная точка является подклассом SocketAddress, не поддерживаемым этим сокетомpublic void bind(SocketAddress endpoint, int backlog) throws IOException
ServerSocket
к определенному адресу (IP-адрес и номер порта). Если адрес null
, тогда система поднимет эфемерный порт и допустимый локальный адрес, чтобы связать сокет.
backlog
параметром является требуемое максимальное количество соединений на ожидании на сокете. Его точная семантика является определенной реализацией. В частности реализация может наложить максимальную длину или может хотеть игнорировать параметр altogther. Обеспеченное значение должно быть больше чем 0
. Если это меньше чем или равно 0
, тогда реализация определенное значение по умолчанию будет использоваться.
endpoint
- IP-адрес & номер порта, чтобы связать с.backlog
- требуемая максимальная длина очереди входящих соединений.IOException
- если связывать работа перестала работать, или если сокет уже связывается.SecurityException
- если a SecurityManager
присутствует и checkListen
метод не позволяет работу.IllegalArgumentException
- если конечная точка является подклассом SocketAddress, не поддерживаемым этим сокетомpublic InetAddress getInetAddress()
Если сокет был связан до того, чтобы быть closed
, тогда этот метод будет продолжать возвращать локальный адрес после того, как сокет будет закрыт.
null
если сокет является несвязанным.public int getLocalPort()
Если сокет был связан до того, чтобы быть closed
, тогда этот метод будет продолжать возвращать номер порта после того, как сокет будет закрыт.
public SocketAddress getLocalSocketAddress()
null
если это еще не связывается. Если сокет был связан до того, чтобы быть closed
, тогда этот метод будет продолжать возвращать адрес конечной точки после того, как сокет будет закрыт.
SocketAddress
представление локальной конечной точки этого сокета, или null
если это еще не связывается.getInetAddress()
, getLocalPort()
, bind(SocketAddress)
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)
protected final void implAccept(Socket s) throws IOException
s
- СокетIllegalBlockingModeException
- если у этого сокета есть связанный канал, и канал находится в неблокировании режимаIOException
- если ошибка ввода-вывода происходит, ожидая соединения.public void close() throws IOException
accept()
бросит a SocketException
. Если у этого сокета есть связанный канал тогда, канал закрывается также.
close
в интерфейсе Closeable
close
в интерфейсе AutoCloseable
IOException
- если ошибка ввода-вывода происходит, закрывая сокет.public ServerSocketChannel getChannel()
ServerSocketChannel
объект, связанный с этим сокетом, если любой. У сокета сервера будет канал, если, и только если, сам канал создавался через ServerSocketChannel.open
метод.
public boolean isBound()
public boolean isClosed()
public void setSoTimeout(int timeout) throws SocketException
SO_TIMEOUT
с указанным тайм-аутом, в миллисекундах. С этим набором опции к ненулевому тайм-ауту вызов, чтобы принять () для этого ServerSocket блокирует для только этого количества времени. Если тайм-аут истекает, java.net. SocketTimeoutException повышается, хотя ServerSocket все еще допустим. Опция должна быть включена до ввода работы блокирования, чтобы иметь эффект. Тайм-аут должен быть> 0. Тайм-аут нуля интерпретируется как бесконечный тайм-аут.timeout
- указанный тайм-аут, в миллисекундахSocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.getSoTimeout()
public int getSoTimeout() throws IOException
SO_TIMEOUT
. 0 возвратов подразумевают, что опция отключается (то есть, тайм-аут бесконечности).SO_TIMEOUT
значениеIOException
- если ошибка ввода-вывода происходитsetSoTimeout(int)
public void setReuseAddress(boolean on) throws SocketException
SO_REUSEADDR
опция сокета. Когда соединение TCP закрывается, соединение может остаться в состоянии тайм-аута сроком на время после того, как соединение закрывается (обычно известный как состояние TIME_WAIT или состояние ожидания 2MSL). Для приложений, используя известный адрес сокета или порт, возможно, не возможно связать сокет с необходимым SocketAddress, если есть соединение в состоянии тайм-аута, включающем адрес сокета или порт.
Включение SO_REUSEADDR
до привязки использования сокета bind(SocketAddress)
позволяет сокету быть связанным даже при том, что предыдущее соединение находится в состоянии тайм-аута.
Когда ServerSocket создается начальная установка SO_REUSEADDR
не определяется. Приложения могут использовать getReuseAddress()
определить начальную установку SO_REUSEADDR
.
Поведение, когда SO_REUSEADDR
включается или отключается после того, как сокет связывается (См. isBound()
) не определяется.
on
- включить ли или отключить опцию сокетаSocketException
- если ошибка происходит, включая или отключая SO_REUSEADDR
опция сокета, или сокет закрывается.getReuseAddress()
, bind(SocketAddress)
, isBound()
, isClosed()
public boolean getReuseAddress() throws SocketException
SO_REUSEADDR
включается.boolean
указание, действительно ли SO_REUSEADDR
включается.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.setReuseAddress(boolean)
public String toString()
String
.public static void setSocketFactory(SocketImplFactory fac) throws IOException
Когда приложение создает новый сокет сервера, фабрика реализации сокета createSocketImpl
метод вызывают, чтобы создать фактическую реализацию сокета.
Передача null
к методу не, если фабрика не была уже установлена.
Если есть менеджер безопасности, этот метод первые вызовы менеджер безопасности checkSetFactory
метод, чтобы гарантировать работу позволяется. Это могло привести к SecurityException.
fac
- требуемая фабрика.IOException
- если ошибка ввода-вывода происходит, устанавливая фабрику сокета.SocketException
- если фабрика была уже определена.SecurityException
- если менеджер безопасности существует и checkSetFactory
метод не позволяет работу.SocketImplFactory.createSocketImpl()
, SecurityManager.checkSetFactory()
public void setReceiveBufferSize(int size) throws SocketException
SO_RCVBUF
опция для сокетов принимается от этого ServerSocket. Значение, фактически установленное в принятом сокете, должно быть определено, вызывая Socket.getReceiveBufferSize()
после того, как сокет возвращается accept()
. Значение SO_RCVBUF
используется и чтобы установить размер внутреннего сокета, получают буфер, и установить размер TCP получают окно, которое рекламируется к удаленной коллеге.
Возможно изменить значение впоследствии, вызывая Socket.setReceiveBufferSize(int)
. Однако, если приложение хочет позволить получить окно, больше чем 64 K байтов, как определено RFC1323 тогда, предложенное значение должно быть установлено в ServerSocket прежде, чем это будет связано с локальным адресом. Это подразумевает, что ServerSocket должен быть создан с конструктором без параметров, тогда setReceiveBufferSize () должен быть вызван, и наконец ServerSocket связывается с адресом вызовом, связывают ().
Отказ сделать это не будет вызывать ошибку, и размер буфера может быть установлен в требуемое значение, но TCP получают окно в сокетах, принятых от этого ServerSocket, будет не больше чем 64 K байтов.
size
- размер, в который можно установить получить размер буфера. Это значение должно быть больше чем 0.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.IllegalArgumentException
- если значение 0 или отрицательно.getReceiveBufferSize()
public int getReceiveBufferSize() throws SocketException
SO_RCVBUF
опция для этого ServerSocket, который является предложенным размером буфера, который будет использоваться для Сокетов, принятых от этого ServerSocket. Отметьте, значение, фактически установленное в принятом сокете, определяется, вызывая Socket.getReceiveBufferSize()
.
SO_RCVBUF
опция для этого Socket.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.setReceiveBufferSize(int)
public void setPerformancePreferences(int connectionTime, int latency, int bandwidth)
Сокеты используют протокол TCP/IP по умолчанию. Некоторые реализации могут предложить альтернативные протоколы, у которых есть различные показатели производительности чем TCP/IP. Этот метод позволяет приложению выражать свое собственное предпочтение относительно того, как эти компромиссы должны быть сделаны, когда реализация выбирает из доступных протоколов.
Предпочтение производительности описывается тремя целыми числами, значения которых указывают на относительную важность короткого времени соединения, низкой задержки, и высокой пропускной способности. Абсолютные значения целых чисел не важны; чтобы выбрать протокол, значения просто сравниваются с большими значениями, указывающими на более сильное предпочтение. Если приложение предпочитает короткое время соединения и по низкой задержке и по высокой пропускной способности, например, то это могло вызвать этот метод со значениями (1, 0, 0). Если приложение предпочитает высокую пропускную способность выше низкой задержки, и низкой задержки выше короткого времени соединения, то это могло вызвать этот метод со значениями (0, 1, 2).
Вызывая этот метод после того, как этот сокет был связан, не будет иметь никакого эффекта. Это подразумевает, что, чтобы использовать эту возможность, требует, чтобы сокет был создан с конструктором без параметров.
connectionTime
- int, выражающий относительную важность короткого времени соединенияlatency
- int, выражающий относительную важность низкой задержкиbandwidth
- int, выражающий относительную важность высокой пропускной способности
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92