Spec-Zone .ru
спецификации, руководства, описания, API
|
public class Socket extends Object implements Closeable
Фактическая работа сокета выполняется экземпляром SocketImpl
класс. Приложение, изменяя фабрику сокета, которая создает реализацию сокета, может сконфигурировать себя, чтобы создать сокеты, соответствующие локальному брандмауэру.
setSocketImplFactory(java.net.SocketImplFactory)
, SocketImpl
, SocketChannel
Модификатор | Конструктор и Описание |
---|---|
|
Socket()
Создает несвязанный сокет, с типом системного значения по умолчанию SocketImpl.
|
|
Socket(InetAddress address, int port)
Создает потоковый сокет и соединяет это с указанным номером порта в указанном IP-адресе.
|
|
Socket(InetAddress host, int port, boolean stream)
Осуждаемый.
Используйте DatagramSocket вместо этого для транспорта UDP.
|
|
Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
Создает сокет и соединяет это с указанным удаленным адресом на указанном удаленном порту.
|
|
Socket(Proxy proxy)
Создает несвязанный сокет, определяя тип прокси, если таковые вообще имеются, который должен использоваться независимо от любых других настроек.
|
protected |
Socket(SocketImpl impl)
Создает несвязанный Сокет с определенным пользователем SocketImpl.
|
|
Socket(String host, int port)
Создает потоковый сокет и соединяет это с указанным номером порта на именованном узле.
|
|
Socket(String host, int port, boolean stream)
Осуждаемый.
Используйте DatagramSocket вместо этого для транспорта UDP.
|
|
Socket(String host, int port, InetAddress localAddr, int localPort)
Создает сокет и соединяет это с указанным удаленным узлом на указанном удаленном порту.
|
Модификатор и Тип | Метод и Описание |
---|---|
void |
bind(SocketAddress bindpoint)
Связывает сокет с локальным адресом.
|
void |
close()
Завершения этот сокет.
|
void |
connect(SocketAddress endpoint)
Подключения этот сокет к серверу.
|
void |
connect(SocketAddress endpoint, int timeout)
Подключения этот сокет к серверу с указанным значением тайм-аута.
|
SocketChannel |
getChannel()
Возвращает уникальное
SocketChannel объект, связанный с этим сокетом, если любой. |
InetAddress |
getInetAddress()
Возвращает адрес, с которым соединяется сокет.
|
InputStream |
getInputStream()
Возвращает входной поток для этого сокета.
|
boolean |
getKeepAlive()
Тесты, если SO_KEEPALIVE включается.
|
InetAddress |
getLocalAddress()
Получает локальный адрес, с которым связывается сокет.
|
int |
getLocalPort()
Возвращает локальный номер порта, с которым связывается этот сокет.
|
SocketAddress |
getLocalSocketAddress()
Возвращает адрес конечной точки, этот сокет связывается с, или
null если это еще не связывается. |
boolean |
getOOBInline()
Тесты, если OOBINLINE включается.
|
OutputStream |
getOutputStream()
Возвращает поток вывода для этого сокета.
|
int |
getPort()
Возвращает удаленный номер порта, с которым соединяется этот сокет.
|
int |
getReceiveBufferSize()
Получает значение опции SO_RCVBUF для этого Socket, который является размером буфера, используемым платформой для ввода на этом Socket.
|
SocketAddress |
getRemoteSocketAddress()
Возвращает адрес конечной точки, этот сокет соединяется с, или
null если это несвязано. |
boolean |
getReuseAddress()
Тесты, если SO_REUSEADDR включается.
|
int |
getSendBufferSize()
Получите значение опции SO_SNDBUF для этого Socket, который является размером буфера, используемым платформой для вывода на этом Socket.
|
int |
getSoLinger()
Установка возвратов для SO_LINGER.
|
int |
getSoTimeout()
Установка возвратов для SO_TIMEOUT.
|
boolean |
getTcpNoDelay()
Тесты, если TCP_NODELAY включается.
|
int |
getTrafficClass()
Получает класс трафика или тип службы в заголовке IP для пакетов, отправленных от этого Сокета
|
boolean |
isBound()
Возвращает обязательное состояние сокета.
|
boolean |
isClosed()
Возвращает закрытое состояние сокета.
|
boolean |
isConnected()
Возвращает состояние соединения сокета.
|
boolean |
isInputShutdown()
Возвраты, закрывается ли половина чтения сокетного соединения.
|
boolean |
isOutputShutdown()
Возвраты, закрывается ли половина записи сокетного соединения.
|
void |
sendUrgentData(int data)
Отправьте один байт срочных данных на сокете.
|
void |
setKeepAlive(boolean on)
Включение/отключение SO_KEEPALIVE.
|
void |
setOOBInline(boolean on)
Позвольте/отключите OOBINLINE (получение TCP срочные данные) По умолчанию, эта опция отключается и TCP, срочные данные, полученные на сокете, тихо отбрасываются.
|
void |
setPerformancePreferences(int connectionTime, int latency, int bandwidth)
Предпочтение производительности наборов этому сокету.
|
void |
setReceiveBufferSize(int size)
Устанавливает опцию SO_RCVBUF в указанное значение для этого Socket.
|
void |
setReuseAddress(boolean on)
Позвольте/отключите опции сокета SO_REUSEADDR.
|
void |
setSendBufferSize(int size)
Устанавливает опцию SO_SNDBUF в указанное значение для этого Socket.
|
static void |
setSocketImplFactory(SocketImplFactory fac)
Устанавливает клиентскую фабрику реализации сокета для приложения.
|
void |
setSoLinger(boolean on, int linger)
В секундах SO_LINGER включения/отключения с указанным задерживаются время.
|
void |
setSoTimeout(int timeout)
Позвольте/отключите SO_TIMEOUT с указанным тайм-аутом в миллисекундах.
|
void |
setTcpNoDelay(boolean on)
Позвольте/отключите TCP_NODELAY (отключите/позвольте алгоритм Нэйгла).
|
void |
setTrafficClass(int tc)
Класс трафика наборов или октет типа службы в заголовке IP для пакетов передались от этого Сокета.
|
void |
shutdownInput()
Помещает входной поток для этого сокета в "конце потока".
|
void |
shutdownOutput()
Отключает поток вывода для этого сокета.
|
Строка |
toString()
Преобразовывает этот сокет в a
String . |
public Socket()
public Socket(Proxy proxy)
Если есть менеджер безопасности, checkConnect
метод вызывают с адресом узла прокси и номером порта как его параметры. Это могло привести к SecurityException.
Примеры:
Socket s = new Socket(Proxy.NO_PROXY);
создаст простой сокет, игнорирующий любую другую конфигурацию прокси.Socket s = new Socket(new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("socks.mydom.com", 1080)));
создаст сокет, соединяющийся через указанный прокси-сервер SOCKS.proxy
- a Proxy
объект, определяющий, какое проксирование должно использоваться.IllegalArgumentException
- если прокси имеет недопустимый тип или null
.SecurityException
- если менеджер безопасности присутствует, и разрешение, чтобы соединиться с прокси отрицается.ProxySelector
, Proxy
protected Socket(SocketImpl impl) throws SocketException
impl
- экземпляр SocketImpl подкласс хочет использовать на Сокете.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.public Socket(String host, int port) throws UnknownHostException, IOException
Если указанным узлом является null, это - эквивалент определения адреса как InetAddress.getByName
(null). Другими словами это эквивалентно определению адреса петлевого интерфейса.
Если приложение определило, что сервер снабжает фабрику сокетом, что фабрика createSocketImpl
метод вызывают, чтобы создать фактическую реализацию сокета. Иначе "простой" сокет создается.
Если есть менеджер безопасности, checkConnect
метод вызывают с адресом узла и port
как его параметры. Это могло привести к SecurityException.
host
- имя хоста, или null
для петлевого адреса.port
- номер порта.UnknownHostException
- если IP-адрес узла не мог бы быть определен.IOException
- если ошибка ввода-вывода происходит, создавая сокет.SecurityException
- если менеджер безопасности существует и checkConnect
метод не позволяет работу.IllegalArgumentException
- если параметр порта вне указанного диапазона допустимых значений порта, который является между 0 и 65535, включительно.setSocketImplFactory(java.net.SocketImplFactory)
, SocketImpl
, SocketImplFactory.createSocketImpl()
, SecurityManager.checkConnect(java.lang.String, int)
public Socket(InetAddress address, int port) throws IOException
Если приложение определило фабрику сокета, что фабрика createSocketImpl
метод вызывают, чтобы создать фактическую реализацию сокета. Иначе "простой" сокет создается.
Если есть менеджер безопасности, checkConnect
метод вызывают с адресом узла и port
как его параметры. Это могло привести к SecurityException.
address
- IP-адрес.port
- номер порта.IOException
- если ошибка ввода-вывода происходит, создавая сокет.SecurityException
- если менеджер безопасности существует и checkConnect
метод не позволяет работу.IllegalArgumentException
- если параметр порта вне указанного диапазона допустимых значений порта, который является между 0 и 65535, включительно.NullPointerException
- если address
нуль.setSocketImplFactory(java.net.SocketImplFactory)
, SocketImpl
, SocketImplFactory.createSocketImpl()
, SecurityManager.checkConnect(java.lang.String, int)
public Socket(String host, int port, InetAddress localAddr, int localPort) throws IOException
Если указанным узлом является null, это - эквивалент определения адреса как InetAddress.getByName
(null). Другими словами это эквивалентно определению адреса петлевого интерфейса.
Локальный номер порта zero
позволит системе поднимать франко-порт в bind
работа.
Если есть менеджер безопасности, checkConnect
метод вызывают с адресом узла и port
как его параметры. Это могло привести к SecurityException.
host
- имя удаленного узла, или null
для петлевого адреса.port
- удаленный портlocalAddr
- локальный адрес сокет связывается с, или null
для anyLocal
адрес.localPort
- локальный порт сокет связывается с, или zero
для системы, выбранной франко-порт.IOException
- если ошибка ввода-вывода происходит, создавая сокет.SecurityException
- если менеджер безопасности существует и checkConnect
метод не позволяет работу.IllegalArgumentException
- если параметр порта или localPort параметр вне указанного диапазона допустимых значений порта, который является между 0 и 65535, включительно.SecurityManager.checkConnect(java.lang.String, int)
public Socket(InetAddress address, int port, InetAddress localAddr, int localPort) throws IOException
Если указанным локальным адресом является null, это - эквивалент определения адреса, поскольку AnyLocal адресуются (см. InetAddress.isAnyLocalAddress
()).
Локальный номер порта zero
позволит системе поднимать франко-порт в bind
работа.
Если есть менеджер безопасности, checkConnect
метод вызывают с адресом узла и port
как его параметры. Это могло привести к SecurityException.
address
- удаленный адресport
- удаленный портlocalAddr
- локальный адрес сокет связывается с, или null
для anyLocal
адрес.localPort
- локальный порт сокет связывается с или zero
для системы, выбранной франко-порт.IOException
- если ошибка ввода-вывода происходит, создавая сокет.SecurityException
- если менеджер безопасности существует и checkConnect
метод не позволяет работу.IllegalArgumentException
- если параметр порта или localPort параметр вне указанного диапазона допустимых значений порта, который является между 0 и 65535, включительно.NullPointerException
- если address
нуль.SecurityManager.checkConnect(java.lang.String, int)
@Deprecated public Socket(String host, int port, boolean stream) throws IOException
Если указанным узлом является null, это - эквивалент определения адреса как InetAddress.getByName
(null). Другими словами это эквивалентно определению адреса петлевого интерфейса.
Если потоковый параметр true
, это создает потоковый сокет. Если потоковый параметр false
, это создает сокет дейтаграммы.
Если приложение определило, что сервер снабжает фабрику сокетом, что фабрика createSocketImpl
метод вызывают, чтобы создать фактическую реализацию сокета. Иначе "простой" сокет создается.
Если есть менеджер безопасности, checkConnect
метод вызывают с адресом узла и port
как его параметры. Это могло привести к SecurityException.
Если сокет UDP будет использоваться, TCP/IP, то связанные опции сокета не будут применяться.
host
- имя хоста, или null
для петлевого адреса.port
- номер порта.stream
- a boolean
указание, является ли это потоковым сокетом или сокетом дейтаграммы.IOException
- если ошибка ввода-вывода происходит, создавая сокет.SecurityException
- если менеджер безопасности существует и checkConnect
метод не позволяет работу.IllegalArgumentException
- если параметр порта вне указанного диапазона допустимых значений порта, который является между 0 и 65535, включительно.setSocketImplFactory(java.net.SocketImplFactory)
, SocketImpl
, SocketImplFactory.createSocketImpl()
, SecurityManager.checkConnect(java.lang.String, int)
@Deprecated public Socket(InetAddress host, int port, boolean stream) throws IOException
Если потоковый параметр true
, это создает потоковый сокет. Если потоковый параметр false
, это создает сокет дейтаграммы.
Если приложение определило, что сервер снабжает фабрику сокетом, что фабрика createSocketImpl
метод вызывают, чтобы создать фактическую реализацию сокета. Иначе "простой" сокет создается.
Если есть менеджер безопасности, checkConnect
с методом вызывают host.getHostAddress()
и port
как его параметры. Это могло привести к SecurityException.
Если сокет UDP будет использоваться, TCP/IP, то связанные опции сокета не будут применяться.
host
- IP-адрес.port
- номер порта.stream
- если true
, создайте потоковый сокет; иначе, создайте сокет дейтаграммы.IOException
- если ошибка ввода-вывода происходит, создавая сокет.SecurityException
- если менеджер безопасности существует и checkConnect
метод не позволяет работу.IllegalArgumentException
- если параметр порта вне указанного диапазона допустимых значений порта, который является между 0 и 65535, включительно.NullPointerException
- если host
нуль.setSocketImplFactory(java.net.SocketImplFactory)
, SocketImpl
, SocketImplFactory.createSocketImpl()
, SecurityManager.checkConnect(java.lang.String, int)
public void connect(SocketAddress endpoint) throws IOException
endpoint
- SocketAddress
IOException
- если ошибка происходит во время соединенияIllegalBlockingModeException
- если у этого сокета есть связанный канал, и канал находится в неблокировании режимаIllegalArgumentException
- если конечная точка является нулем или является подклассом SocketAddress, не поддерживаемым этим сокетомpublic void connect(SocketAddress endpoint, int timeout) throws IOException
endpoint
- SocketAddress
timeout
- значение тайм-аута, которое будет использоваться в миллисекундах.IOException
- если ошибка происходит во время соединенияSocketTimeoutException
- если тайм-аут истекает перед соединениемIllegalBlockingModeException
- если у этого сокета есть связанный канал, и канал находится в неблокировании режимаIllegalArgumentException
- если конечная точка является нулем или является подклассом SocketAddress, не поддерживаемым этим сокетомpublic void bind(SocketAddress bindpoint) throws IOException
Если адрес null
, тогда система поднимет эфемерный порт и допустимый локальный адрес, чтобы связать сокет.
bindpoint
- SocketAddress
связывать сIOException
- если связывать работа перестала работать, или если сокет уже связывается.IllegalArgumentException
- если bindpoint является подклассом SocketAddress, не поддерживаемым этим сокетомisBound()
public InetAddress getInetAddress()
Если сокет был соединен до того, чтобы быть closed
, тогда этот метод будет продолжать возвращать соединенный адрес после того, как сокет будет закрыт.
null
если сокет не соединяется.public InetAddress getLocalAddress()
wildcard
адресуйтесь, если сокет закрывается или не связывается все же.public int getPort()
Если сокет был соединен до того, чтобы быть closed
, тогда этот метод будет продолжать возвращать соединенный номер порта после того, как сокет будет закрыт.
public int getLocalPort()
Если сокет был связан до того, чтобы быть closed
, тогда этот метод будет продолжать возвращать локальный номер порта после того, как сокет будет закрыт.
public SocketAddress getRemoteSocketAddress()
null
если это несвязано. Если сокет был соединен до того, чтобы быть closed
, тогда этот метод будет продолжать возвращать соединенный адрес после того, как сокет будет закрыт.
SocketAddress
представление удаленной конечной точки этого сокета, или null
если это еще не соединяется.getInetAddress()
, getPort()
, connect(SocketAddress, int)
, connect(SocketAddress)
public SocketAddress getLocalSocketAddress()
null
если это еще не связывается. Если сокет, связанный с конечной точкой, представленной InetSocketAddress
closed
, тогда этот метод будет продолжать возвращаться InetSocketAddress
после того, как сокет закрывается. В этом случае возвращенный InetSocketAddress
's адрес wildcard
адресуйтесь и его порт является локальным портом, с которым это было связано.
SocketAddress
представление локальной конечной точки этого сокета, или null
если это еще не связывается.getLocalAddress()
, getLocalPort()
, bind(SocketAddress)
public SocketChannel getChannel()
SocketChannel
объект, связанный с этим сокетом, если любой. У сокета будет канал, если, и только если, сам канал создавался через SocketChannel.open
или ServerSocketChannel.accept
методы.
public InputStream getInputStream() throws IOException
Если у этого сокета есть связанный канал тогда, получающийся входной поток делегирует все свои операции к каналу. Если канал будет в неблокировании режима тогда входной поток, то операции read бросят IllegalBlockingModeException
.
При аварийных условиях базовое соединение может быть повреждено удаленным узлом или сетевым программным обеспечением (например сброс соединения в случае соединений TCP). Когда поврежденное соединение обнаруживается сетевым программным обеспечением, следующее применяется к возвращенному входному потоку:-
Сетевое программное обеспечение может отбросить байты, которые буферизуются сокетом. Байты, которые не отбрасываются сетевым программным обеспечением, могут быть считаны, используя read
.
Если нет никаких байтов, буферизованных на сокете, или все буферизованные байты были использованы read
, тогда все последующие звонки read
бросит IOException
.
Если нет никаких байтов, буферизованных на сокете, и сокет не был закрыт, используя close
, тогда available
возвратится 0
.
Закрытие возвращенного InputStream
закроет связанный сокет.
IOException
- если ошибка ввода-вывода происходит, создавая входной поток, сокет закрывается, сокет не соединяется, или ввод сокета был использованием завершения работы shutdownInput()
public OutputStream getOutputStream() throws IOException
Если у этого сокета есть связанный канал тогда, получающийся поток вывода делегирует все свои операции к каналу. Если канал будет в неблокировании режима тогда, то операции write потока вывода бросят IllegalBlockingModeException
.
Закрытие возвращенного OutputStream
закроет связанный сокет.
IOException
- если ошибка ввода-вывода происходит, создавая поток вывода или если сокет не соединяется.public void setTcpNoDelay(boolean on) throws SocketException
on
- true
включать TCP_NODELAY, false
отключить.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.getTcpNoDelay()
public boolean getTcpNoDelay() throws SocketException
boolean
указание, включается ли TCP_NODELAY.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.setTcpNoDelay(boolean)
public void setSoLinger(boolean on, int linger) throws SocketException
on
- задержаться ли на.linger
- сколько времени задержаться для, если на истина.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.IllegalArgumentException
- если задерживаться значение отрицательно.getSoLinger()
public int getSoLinger() throws SocketException
SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.setSoLinger(boolean, int)
public void sendUrgentData(int data) throws IOException
data
- Байт данных, чтобы передатьсяIOException
- если есть ошибка, отправляя данные.public void setOOBInline(boolean on) throws SocketException
Отметьте, только ограниченная поддержка оказывается для того, чтобы обработать входящие срочные данные. В частности никакое уведомление о входящих срочных данных не обеспечивается и нет никакой возможности различить нормальные данные и срочные данные если не обеспечено высокоуровневым протоколом.
on
- true
включать OOBINLINE, false
отключить.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.getOOBInline()
public boolean getOOBInline() throws SocketException
boolean
указание, включается ли OOBINLINE.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.setOOBInline(boolean)
public void setSoTimeout(int timeout) throws SocketException
timeout
- указанный тайм-аут, в миллисекундах.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.getSoTimeout()
public int getSoTimeout() throws SocketException
SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.setSoTimeout(int)
public void setSendBufferSize(int size) throws SocketException
Поскольку SO_SNDBUF является подсказкой, приложения, которые хотят проверить то, во что был установлен размер буферы, должны вызвать getSendBufferSize()
.
size
- размер, в который можно установить отправить размер буфера. Это значение должно быть больше чем 0.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.IllegalArgumentException
- если значение 0 или отрицательно.getSendBufferSize()
public int getSendBufferSize() throws SocketException
SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.setSendBufferSize(int)
public void setReceiveBufferSize(int size) throws SocketException
Увеличение получить размер буфера может увеличить производительность сетевого ввода-вывода для соединения большого объема, уменьшаясь, это может помочь уменьшить отставание входящих данных.
Поскольку SO_RCVBUF является подсказкой, приложения, которые хотят проверить то, во что был установлен размер буферы, должны вызвать getReceiveBufferSize()
.
Значение SO_RCVBUF также используется, чтобы установить TCP, получают окно, которое рекламируется к удаленной коллеге. Обычно, размер окна может быть изменен в любое время, когда сокет соединяется. Однако, если получить окно, больше чем 64 K, требуется тогда, это нужно требовать прежде, чем сокет соединяется с удаленной коллегой. Есть два случая, чтобы знать:
ServerSocket.setReceiveBufferSize(int)
прежде, чем ServerSocket связывается с локальным адресом.size
- размер, в который можно установить получить размер буфера. Это значение должно быть больше чем 0.IllegalArgumentException
- если значение 0 или отрицательно.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.getReceiveBufferSize()
, ServerSocket.setReceiveBufferSize(int)
public int getReceiveBufferSize() throws SocketException
SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.setReceiveBufferSize(int)
public void setKeepAlive(boolean on) throws SocketException
on
- иметь ли сокет, поддерживают включенный.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.getKeepAlive()
public boolean getKeepAlive() throws SocketException
boolean
указание, включается ли SO_KEEPALIVE.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.setKeepAlive(boolean)
public void setTrafficClass(int tc) throws SocketException
tc должен быть в диапазоне 0 <= tc <=
255
or an IllegalArgumentException will be thrown.
Notes:
For Internet Protocol v4 the value consists of an integer
, the least significant 8 bits of which represent the value of the TOS octet in IP packets sent by the socket. RFC 1349 defines the TOS values as follows:
IPTOS_LOWCOST (0x02)
IPTOS_RELIABILITY (0x04)
IPTOS_THROUGHPUT (0x08)
IPTOS_LOWDELAY (0x10)
Setting bits in the precedence field may result in a SocketException indicating that the operation is not permitted.
As RFC 1122 section 4.2.4.2 indicates, a compliant TCP implementation should, but is not required to, let application change the TOS field during the lifetime of a connection. So whether the type-of-service field can be changed after the TCP connection has been established depends on the implementation in the underlying platform. Applications should not assume that they can change the TOS field after the connection.
For Internet Protocol v6 tc
is the value that would be placed into the sin6_flowinfo field of the IP header.
tc
- an int
value for the bitset.SocketException
- if there is an error setting the traffic class or type-of-servicegetTrafficClass()
public int getTrafficClass() throws SocketException
As the underlying network implementation may ignore the traffic class or type-of-service set using setTrafficClass(int)
this method may return a different value than was previously set using the setTrafficClass(int)
method on this Socket.
SocketException
- if there is an error obtaining the traffic class or type-of-service value.setTrafficClass(int)
public void setReuseAddress(boolean on) throws SocketException
When a TCP connection is closed the connection may remain in a timeout state for a period of time after the connection is closed (typically known as the TIME_WAIT state or 2MSL wait state). For applications using a well known socket address or port it may not be possible to bind a socket to the required SocketAddress if there is a connection in the timeout state involving the socket address or port.
Enabling SO_REUSEADDR prior to binding the socket using bind(SocketAddress)
allows the socket to be bound even though a previous connection is in a timeout state.
When a Socket is created the initial setting of SO_REUSEADDR is disabled.
The behaviour when SO_REUSEADDR is enabled or disabled after a socket is bound (See isBound()
) is not defined.
on
- whether to enable or disable the socket optionSocketException
- if an error occurs enabling or disabling the SO_RESUEADDR socket option, or the socket is closed.getReuseAddress()
, bind(SocketAddress)
, isClosed()
, isBound()
public boolean getReuseAddress() throws SocketException
boolean
indicating whether or not SO_REUSEADDR is enabled.SocketException
- if there is an error in the underlying protocol, such as a TCP error.setReuseAddress(boolean)
public void close() throws IOException
Any thread currently blocked in an I/O operation upon this socket will throw a SocketException
.
Once a socket has been closed, it is not available for further networking use (i.e. can't be reconnected or rebound). A new socket needs to be created.
Closing this socket will also close the socket's InputStream
and OutputStream
.
If this socket has an associated channel then the channel is closed as well.
close
in interface Closeable
close
in interface AutoCloseable
IOException
- if an I/O error occurs when closing this socket.isClosed()
public void shutdownInput() throws IOException
If you read from a socket input stream after invoking shutdownInput() on the socket, the stream will return EOF.
IOException
- if an I/O error occurs when shutting down this socket.shutdownOutput()
, close()
, setSoLinger(boolean, int)
, isInputShutdown()
public void shutdownOutput() throws IOException
IOException
- if an I/O error occurs when shutting down this socket.shutdownInput()
, close()
, setSoLinger(boolean, int)
, isOutputShutdown()
public String toString()
String
.public boolean isConnected()
Note: Closing a socket doesn't clear its connection state, which means this method will return true
for a closed socket (see isClosed()
) if it was successfuly connected prior to being closed.
public boolean isBound()
Note: Closing a socket doesn't clear its binding state, which means this method will return true
for a closed socket (see isClosed()
) if it was successfuly bound prior to being closed.
bind(java.net.SocketAddress)
public boolean isClosed()
close()
public boolean isInputShutdown()
shutdownInput()
public boolean isOutputShutdown()
shutdownOutput()
public static void setSocketImplFactory(SocketImplFactory fac) throws IOException
When an application creates a new client socket, the socket implementation factory's createSocketImpl
method is called to create the actual socket implementation.
Passing null
to the method is a no-op unless the factory was already set.
If there is a security manager, this method first calls the security manager's checkSetFactory
method to ensure the operation is allowed. This could result in a SecurityException.
fac
- the desired factory.IOException
- if an I/O error occurs when setting the socket factory.SocketException
- if the factory is already defined.SecurityException
- if a security manager exists and its checkSetFactory
method doesn't allow the operation.SocketImplFactory.createSocketImpl()
, SecurityManager.checkSetFactory()
public void setPerformancePreferences(int connectionTime, int latency, int bandwidth)
Sockets use the TCP/IP protocol by default. Some implementations may offer alternative protocols which have different performance characteristics than TCP/IP. This method allows the application to express its own preferences as to how these tradeoffs should be made when the implementation chooses from the available protocols.
Performance preferences are described by three integers whose values indicate the relative importance of short connection time, low latency, and high bandwidth. The absolute values of the integers are irrelevant; in order to choose a protocol the values are simply compared, with larger values indicating stronger preferences. Negative values represent a lower priority than positive values. If the application prefers short connection time over both low latency and high bandwidth, for example, then it could invoke this method with the values (1, 0, 0). If the application prefers high bandwidth above low latency, and low latency above short connection time, then it could invoke this method with the values (0, 1, 2).
Invoking this method after this socket has been connected will have no effect.
connectionTime
- An int expressing the relative importance of a short connection timelatency
- An int expressing the relative importance of low latencybandwidth
- An int expressing the relative importance of high bandwidth
For further API reference and developer documentation, see
Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.