|
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, Proxyprotected 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 - SocketAddressIOException - если ошибка происходит во время соединенияIllegalBlockingModeException - если у этого сокета есть связанный канал, и канал находится в неблокировании режимаIllegalArgumentException - если конечная точка является нулем или является подклассом SocketAddress, не поддерживаемым этим сокетомpublic void connect(SocketAddress endpoint, int timeout) throws IOException
endpoint - SocketAddresstimeout - значение тайм-аута, которое будет использоваться в миллисекундах.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_TIMEOUTSocketException - если есть ошибка в базовом протоколе, таком как ошибка 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_TOSpublic 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_TOSpublic 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 Closeableclose in interface AutoCloseableIOException - 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