Spec-Zone .ru
спецификации, руководства, описания, API
|
public class Socket extends Object implements Closeable
Фактическая работа сокета выполняется экземпляром SocketImpl
class. Приложение, изменяя фабрику сокета, которая создает реализацию сокета, может сконфигурировать себя, чтобы создать сокеты, соответствующие локальному брандмауэру.
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()
Тесты, если
SO_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()
Получает трафик class или тип службы в заголовке 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)
Позволить/отключить
SO_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)
Трафик наборов class или октет типа службы в заголовке 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
TCP_NODELAY
(отключите/позвольте алгоритм Нэйгла).on
- true
включать TCP_NODELAY, false
отключить.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.getTcpNoDelay()
public boolean getTcpNoDelay() throws SocketException
TCP_NODELAY
включается.boolean
указание, действительно ли TCP_NODELAY
включается.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.setTcpNoDelay(boolean)
public void setSoLinger(boolean on, int linger) throws SocketException
SO_LINGER
с указанным задерживаются время в секундах. Максимальное значение тайм-аута является определенной платформой. Установка только влияет на сокет близко.on
- задержаться ли на.linger
- сколько времени задержаться для, если на истина.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.IllegalArgumentException
- если задерживаться значение отрицательно.getSoLinger()
public int getSoLinger() throws SocketException
SO_LINGER
.-1 возврат подразумевает, что опция отключается. Установка только влияет на сокет близко.SO_LINGER
.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.setSoLinger(boolean, int)
public void sendUrgentData(int data) throws IOException
data
- Байт данных, чтобы передатьсяIOException
- если есть ошибка, отправляя данные.public void setOOBInline(boolean on) throws SocketException
SO_OOBINLINE
(получение TCP срочные данные) По умолчанию, эта опция отключается и TCP, срочные данные, полученные на сокете, тихо отбрасываются. Если пользователь хочет получить срочные данные, то эта опция должна быть включена. Когда включено, срочные данные получаются встроенные с нормальными данными. Отметьте, только ограниченная поддержка оказывается для того, чтобы обработать входящие срочные данные. В частности никакое уведомление о входящих срочных данных не обеспечивается и нет никакой возможности различить нормальные данные и срочные данные если не обеспечено высокоуровневым протоколом.
on
- true
включать SO_OOBINLINE
, false
отключить.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.getOOBInline()
public boolean getOOBInline() throws SocketException
SO_OOBINLINE
включается.boolean
указание, действительно ли SO_OOBINLINE
включается.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.setOOBInline(boolean)
public void setSoTimeout(int timeout) throws SocketException
SO_TIMEOUT
с указанным тайм-аутом, в миллисекундах. С этим набором опции к ненулевому тайм-ауту чтение () обращается к InputStream, связанному с этим Сокетом, блокирует для только этого количества времени. Если тайм-аут истекает, java.net. SocketTimeoutException повышается, хотя Сокет все еще допустим. Опция должна быть включена до ввода работы блокирования, чтобы иметь эффект. Тайм-аут должен быть> 0. Тайм-аут нуля интерпретируется как бесконечный тайм-аут.timeout
- указанный тайм-аут, в миллисекундах.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.getSoTimeout()
public int getSoTimeout() throws SocketException
SO_TIMEOUT
. 0 возвратов подразумевают, что опция отключается (то есть, тайм-аут бесконечности).SO_TIMEOUT
SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.setSoTimeout(int)
public void setSendBufferSize(int size) throws SocketException
SO_SNDBUF
опция к указанному значению для этого Socket. SO_SNDBUF
опция используется сетевым кодом платформы в качестве подсказки для размера, чтобы установить базовые сетевые буферы ввода-вывода. Поскольку SO_SNDBUF
подсказка, приложения, которые хотят проверить то, во что был установлен размер буферы, должны вызвать getSendBufferSize()
.
size
- размер, в который можно установить отправить размер буфера. Это значение должно быть больше чем 0.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.IllegalArgumentException
- если значение 0 или отрицательно.getSendBufferSize()
public int getSendBufferSize() throws SocketException
SO_SNDBUF
опция для этого Socket, который является размером буфера, используемым платформой для вывода на этом Socket.SO_SNDBUF
опция для этого Socket.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.setSendBufferSize(int)
public void setReceiveBufferSize(int size) throws SocketException
SO_RCVBUF
опция к указанному значению для этого Socket. SO_RCVBUF
опция используется сетевым кодом платформы в качестве подсказки для размера, чтобы установить базовые сетевые буферы ввода-вывода. Увеличение получить размер буфера может увеличить производительность сетевого ввода-вывода для соединения большого объема, уменьшаясь, это может помочь уменьшить отставание входящих данных.
Поскольку 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
SO_RCVBUF
опция для этого Socket, который является размером буфера, используемым платформой для ввода на этом Socket.SO_RCVBUF
опция для этого Socket.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.setReceiveBufferSize(int)
public void setKeepAlive(boolean on) throws SocketException
SO_KEEPALIVE
.on
- иметь ли сокет, поддерживают включенный.SocketException
- если есть ошибка в базовом протоколе, таком как ошибка TCP.getKeepAlive()
public boolean getKeepAlive() throws SocketException
SO_KEEPALIVE
включается.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()
, SocketOptions.IP_TOS
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)
, SocketOptions.IP_TOS
public void setReuseAddress(boolean on) throws SocketException
SO_REUSEADDR
socket option. 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_REUSEADDR
socket option, or the socket is closed.getReuseAddress()
, bind(SocketAddress)
, isClosed()
, isBound()
public boolean getReuseAddress() throws SocketException
SO_REUSEADDR
is enabled.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 this method on the socket, the stream's available
method will return 0, and its read
methods will return -1
(end of stream).
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 Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.
DRAFT ea-b92