Spec-Zone.ru › OpenJDK 8

Класс Socket

  • java.lang.Object
    • java.net.Socket
Все реализованные интерфейсы:
Closeable, AutoCloseable
Прямые известные подклассы:
SSLSocket

public class Socket
extends Object
implements Closeable

Этот класс реализует клиентские сокеты (также называемые просто "сокетами"). Сокет — это конечная точка для связи между двумя машинами.

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

С тех пор:
JDK1.0
См. также:
setSocketImplFactory(java.net.SocketImplFactory), SocketImpl, SocketChannel

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

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

Создаёт неподключенный сокет с типом SocketImpl по умолчанию для системы.

Socket(InetAddress address, int port)

Создаёт сокет потокового типа и подключает его к указанному номеру порта на указанном IP-адресе.

Socket(InetAddress host, int port, boolean stream)

Устарело.

Для UDP-транспорта используйте DatagramSocket.

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)

Устарело.

Для UDP-транспорта используйте DatagramSocket.

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()

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

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()

Получает класс трафика или тип обслуживания в 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)

Устанавливает класс трафика или октет типа обслуживания в IP-заголовке для пакетов, отправляемых из этого сокета.

void shutdownInput()

Устанавливает входной поток этого сокета в "конец потока".

void shutdownOutput()

Отключает выходной поток для этого сокета.

String toString()

Преобразует этот сокет в String.

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

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

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

Socket

public Socket()

Создаёт неподключённый сокет с типом SocketImpl по умолчанию.

С момента:
JDK1.1

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 - объект Proxy, определяющий тип проксирования.
Исключения:
IllegalArgumentException - если тип прокси некорректен или null.
SecurityException - если менеджер безопасности существует и разрешение на подключение к прокси отсутствует.
С момента:
1.5
См. также:
ProxySelector, Proxy

Socket

protected Socket(SocketImpl impl)
          throws SocketException

Создаёт неподключённый сокет с заданным SocketImpl.

Параметры:
impl - экземпляр SocketImpl, который подкласс хочет использовать в сокете.
Исключения:
SocketException - если произошла ошибка в базовом протоколе, например, TCP-ошибка.
SecurityException - если impl не null, менеджер безопасности установлен, и его метод checkPermission не допускает NetPermission("setSocketImpl").
С момента:
JDK1.1

Socket

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)

Socket

public Socket(InetAddress address,
              int port)
       throws IOException

Создаёт потоковый сокет и подключает его к указанному порту по указанному IP-адресу.

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

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

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

Socket

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 не разрешает подключение к пункту назначения или его метод checkListen не разрешает привязку к локальному порту.
IllegalArgumentException - если параметр порта или localPort находится вне допустимого диапазона (0-65535).
С момента:
JDK1.1
См. также:
SecurityManager.checkConnect(java.lang.String, int)

Socket

public Socket(InetAddress address,
              int port,
              InetAddress localAddr,
              int localPort)
       throws IOException

Создаёт сокет и подключает его к указанному удалённому адресу по указанному удалённому порту. Сокет также будет привязан к локальному адресу и порту.

Если указанный локальный адрес null это эквивалентно указанию адреса любого локального адреса (см. InetAddress.isAnyLocalAddress()).

Локальный номер порта zero позволит системе выбрать свободный порт в ходе операции bind.

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

Параметры:
address - удалённый адрес
port - удалённый порт
localAddr - локальный адрес для привязки сокета, или null для адреса anyLocal.
localPort - локальный порт для привязки сокета, или zero для выбора свободного порта системой.
Исключения:
IOException - если при создании сокета произошла ошибка ввода-вывода.
SecurityException - если менеджер безопасности существует и его метод checkConnect не разрешает подключение к пункту назначения или его метод checkListen не разрешает привязку к локальному порту.
IllegalArgumentException - если параметр порта или localPort находится вне допустимого диапазона (0-65535).
NullPointerException - если address равно null.
С момента:
JDK1.1
См. также:
SecurityManager.checkConnect(java.lang.String, int)

Socket

@Deprecated
public Socket(String host,
                          int port,
                          boolean stream)
                   throws IOException

Устарело. Используйте DatagramSocket для UDP-транспорта.

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

Если указанный хост равен null это эквивалентно указанию адреса как InetAddress.getByName(null). Другими словами, это эквивалентно указанию адреса локального интерфейса.

Если параметр stream равен true, создаётся потоковый сокет. Если stream равен false, создаётся датаграмный сокет.

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

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

Если используется UDP-сокет, TCP/IP-связанные параметры сокета не применяются.

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

Socket

@Deprecated
public Socket(InetAddress host,
                          int port,
                          boolean stream)
                   throws IOException

Устарело. Используйте DatagramSocket вместо UDP-транспорта.

Создаёт сокет и подключает его к указанному номеру порта на указанном IP-адресе.

Если параметр stream имеет значение true, создаётся сокет потока. Если параметр stream имеет значение false, создаётся сокет дейтаграммы.

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

Если существует менеджер безопасности, вызывается его метод checkConnect с host.getHostAddress() и port в качестве аргументов. Это может привести к исключению SecurityException.

Если используется сокет UDP, параметры сокета, относящиеся к TCP/IP, не будут применяться.

Параметры:
host - IP-адрес.
port - номер порта.
stream - если true, создать сокет потока; в противном случае, создать сокет дейтаграммы.
Исключения:
IOException - если при создании сокета произошла ошибка ввода-вывода.
SecurityException - если существует менеджер безопасности и его метод checkConnect не разрешает операцию.
IllegalArgumentException - если параметр порта находится за пределами допустимого диапазона портов, который составляет от 0 до 65535 включительно.
NullPointerException - если host равно null.
См. также:
setSocketImplFactory(java.net.SocketImplFactory), SocketImpl, SocketImplFactory.createSocketImpl(), SecurityManager.checkConnect(java.lang.String, int)

Методы

connect

public void connect(SocketAddress endpoint)
             throws IOException

Подключает этот сокет к серверу.

Параметры:
endpoint - адрес
Исключения:
IOException - если произошла ошибка во время подключения
IllegalBlockingModeException - если у этого сокета есть связанный канал, и канал находится в режиме без блокировки
IllegalArgumentException - если конечная точка равна null или является подклассом SocketAddress, не поддерживаемым этим сокетом
С момента:
1.4

connect

public void connect(SocketAddress endpoint,
                    int timeout)
             throws IOException

Подключает этот сокет к серверу с указанным временем ожидания. Время ожидания 0 интерпретируется как бесконечное время ожидания. Подключение будет блокироваться до установления соединения или возникновения ошибки.

Параметры:
endpoint - адрес
timeout - значение таймаута в миллисекундах.
Исключения:
IOException - если произошла ошибка во время подключения
SocketTimeoutException - если время ожидания истекло до подключения
IllegalBlockingModeException - если у этого сокета есть связанный канал, и канал находится в режиме без блокировки
IllegalArgumentException - если конечная точка равна null или является подклассом SocketAddress, не поддерживаемым этим сокетом
С момента:
1.4

bind

public void bind(SocketAddress bindpoint)
          throws IOException

Связывает сокет с локальным адресом.

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

Параметры:
bindpoint - адрес для привязки
Исключения:
IOException - если операция привязки завершилась неудачей или если сокет уже привязан.
IllegalArgumentException - если bindpoint является подклассом SocketAddress, не поддерживаемым этим сокетом
SecurityException - если менеджер безопасности существует и его метод checkListen не разрешает привязку к локальному порту.
С момента:
1.4
См. также:
isBound()

getInetAddress

public InetAddress getInetAddress()

Возвращает адрес, к которому подключен сокет.

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

Возвращает:
удаленный IP-адрес, к которому подключен этот сокет, или null если сокет не подключен.

getLocalAddress

public InetAddress getLocalAddress()

Получает локальный адрес, к которому привязан сокет.

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

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

getPort

public int getPort()

Возвращает удалённый номер порта, к которому подключен этот сокет.

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

Возвращает:
номер удалённого порта, к которому подключен этот сокет, или 0, если сокет ещё не подключен.

getLocalPort

public int getLocalPort()

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

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

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

getRemoteSocketAddress

public SocketAddress getRemoteSocketAddress()

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

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

Возвращает:
объект SocketAddress, представляющий удалённую конечную точку этого сокета, или null если он ещё не подключён.
С момента:
1.4
См. также:
getInetAddress(), getPort(), connect(SocketAddress, int), connect(SocketAddress)

getLocalSocketAddress

public SocketAddress getLocalSocketAddress()

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

Если сокет, привязанный к конечной точке, представленной InetSocketAddress , closed, то этот метод будет продолжать возвращать InetSocketAddress после закрытия сокета. В этом случае адрес возвращаемой InetSocketAddress - это адрес wildcard, а его порт - это локальный порт, к которому он был привязан.

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

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

getChannel

public SocketChannel getChannel()

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

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

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

getInputStream

public InputStream getInputStream()
                           throws IOException

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

Если этому сокету сопоставлен канал, то возвращаемый поток ввода делегирует все свои операции этому каналу. Если канал находится в режиме без блокировки, то операции потока ввода read будут выбрасывать исключение IllegalBlockingModeException.

В аномальных условиях подключение может быть разорвано удалённым узлом или сетевым программным обеспечением (например, при сбросе подключения в случае TCP-соединений). При обнаружении разорванного подключения сетевым программным обеспечением для возвращаемого потока ввода применяется следующее:

  • Сетевое программное обеспечение может отбросить байты, которые буферизированы сокетом. Байты, которые не отбрасываются сетевым программным обеспечением, могут быть прочитаны с помощью read.

  • Если на сокете нет буферизованных байтов или все буферизованные байты были израсходованы с помощью read, то все последующие вызовы read будут выбрасывать исключение IOException.

  • Если на сокете нет буферизованных байтов и сокет не был закрыт с помощью close, то available вернёт 0.

Закрытие возвращаемого InputStream закроет связанный сокет.

Возвращает:
поток ввода для чтения байтов из этого сокета.
Исключение:
IOException - если при создании потока ввода произошла ошибка ввода-вывода, сокет закрыт, сокет не подключён или входной поток сокета был закрыт с помощью shutdownInput()

getOutputStream

public OutputStream getOutputStream()
                             throws IOException

Возвращает поток вывода для этого сокета.

Если этому сокету сопоставлен канал, то возвращаемый поток вывода делегирует все свои операции этому каналу. Если канал находится в режиме без блокировки, то операции потока вывода write будут выбрасывать исключение IllegalBlockingModeException.

Закрытие возвращаемого OutputStream закроет связанный сокет.

Возвращает:
поток вывода для записи байтов в этот сокет.
Исключение:
IOException - если при создании потока вывода произошла ошибка ввода-вывода или сокет не подключён.

setTcpNoDelay

public void setTcpNoDelay(boolean on)
                   throws SocketException

Включить/отключить TCP_NODELAY (отключить/включить алгоритм Нейгла).

Параметры:
on - true для включения TCP_NODELAY, false для отключения.
Исключение:
SocketException - если произошла ошибка в базовом протоколе, например, TCP-ошибка.
С:
JDK1.1
См. также:
getTcpNoDelay()

getTcpNoDelay

public boolean getTcpNoDelay()
                      throws SocketException

Проверяет, включен ли TCP_NODELAY.

Возвращает:
значение, указывающее, включён ли TCP_NODELAY.
Исключение:
SocketException - если произошла ошибка в базовом протоколе, например, TCP-ошибка.
С:
JDK1.1
См. также:
setTcpNoDelay(boolean)

setSoLinger

public void setSoLinger(boolean on,
                        int linger)
                 throws SocketException

Включить/отключить SO_LINGER с указанным временем ожидания в секундах. Максимальное значение таймаута зависит от платформы. Настройка влияет только на закрытие сокета.

Параметры:
on - включить ожидание ли нет.
linger - время ожидания, если on равно true.
Исключение:
SocketException - если произошла ошибка в базовом протоколе, например, TCP-ошибка.
IllegalArgumentException - если значение ожидания отрицательное.
С:
JDK1.1
См. также:
getSoLinger()

getSoLinger

public int getSoLinger()
                throws SocketException

Возвращает значение настройки SO_LINGER. -1 означает, что опция отключена. Настройка влияет только на закрытие сокета.

Возвращает:
значение настройки SO_LINGER.
Исключение:
SocketException - если произошла ошибка в базовом протоколе, например, TCP-ошибка.
С:
JDK1.1
См. также:
setSoLinger(boolean, int)

sendUrgentData

public void sendUrgentData(int data)
                    throws IOException

Отправляет один байт срочных данных по сокету. Отправляемый байт — это младшие восемь бит параметра data. Срочный байт отправляется после любых предыдущих записей в поток вывода сокета и перед любыми будущими записями в поток вывода.

Параметры:
data - Байта данных для отправки
Исключение:
IOException - если произошла ошибка при отправке данных.
С:
1.4

setOOBInline

public void setOOBInline(boolean on)
                  throws SocketException

Включить/отключить SO_OOBINLINE (получение срочных TCP-данных). По умолчанию эта опция отключена, и полученные срочные TCP-данные игнорируются. Если нужно получить срочные данные, эту опцию необходимо включить. При включении срочные данные получаются совместно с обычными данными.

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

Параметры:
on - true для включения SO_OOBINLINE, false для отключения.
Исключение:
SocketException - если произошла ошибка в базовом протоколе, например, TCP-ошибка.
С:
1.4
См. также:
getOOBInline()

getOOBInline

public boolean getOOBInline()
                     throws SocketException

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

Возвращает:
значение, указывающее, включена ли опция SO_OOBINLINE.
Исключение:
SocketException - если произошла ошибка в базовом протоколе, например, TCP-ошибка.
С:
1.4
См. также:
setOOBInline(boolean)

setSoTimeout

public void setSoTimeout(int timeout)
                  throws SocketException

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

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

getSoTimeout

public int getSoTimeout()
                 throws SocketException

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

Возвращает:
значение настройки SO_TIMEOUT
Исключение:
SocketException - если произошла ошибка в базовом протоколе, например, TCP-ошибка.
С:
JDK1.1
См. также:
setSoTimeout(int)

setSendBufferSize

public void setSendBufferSize(int size)
                       throws SocketException

Устанавливает опцию SO_SNDBUF для этого сокета на указанное значение. Опция SO_SNDBUF используется сетевым кодом платформы в качестве подсказки для размера буферов сетевого ввода-вывода.

Так как SO_SNDBUF является подсказкой, приложения, которые хотят проверить, какой размер буферов был установлен, должны вызвать getSendBufferSize().

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

getSendBufferSize

public int getSendBufferSize()
                      throws SocketException

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

Возвращает:
значение опции SO_SNDBUF для этого сокета.
Исключение:
SocketException - если произошла ошибка в базовом протоколе, например, TCP-ошибка.
С:
1.2
См. также:
setSendBufferSize(int)

setReceiveBufferSize

public void setReceiveBufferSize(int size)
                          throws SocketException

Устанавливает параметр SO_RCVBUF для этого Socket на указанное значение. Параметр SO_RCVBUF используется сетевым кодом платформы в качестве подсказки для размера буферов ввода-вывода сети.

Увеличение размера буфера приема может повысить производительность сетевого ввода-вывода для высокообъемных соединений, а уменьшение может помочь снизить очередь входящих данных.

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

Значение SO_RCVBUF также используется для установки TCP-окна приема, которое рекламируется удаленному узлу. В общем случае размер окна может быть изменён в любое время, когда сокет подключён. Однако, если требуется окно приема больше 64Кб, это необходимо запросить **до** подключения сокета к удаленному узлу. Следует учитывать два случая:

  1. Для сокетов, принятых от ServerSocket, это необходимо сделать, вызвав ServerSocket.setReceiveBufferSize(int) перед привязкой ServerSocket к локальному адресу.
  2. Для клиентских сокетов, setReceiveBufferSize() необходимо вызвать перед подключением сокета к удалённому узлу.
Параметры:
size - размер, на который необходимо установить размер буфера приема. Это значение должно быть больше 0.
Исключения:
IllegalArgumentException - если значение равно 0 или отрицательно.
SocketException - если возникла ошибка в базовом протоколе, например, ошибка TCP.
С тех пор:
1.2
См. также:
getReceiveBufferSize(), ServerSocket.setReceiveBufferSize(int)

getReceiveBufferSize

public int getReceiveBufferSize()
                         throws SocketException

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

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

setKeepAlive

public void setKeepAlive(boolean on)
                  throws SocketException

Включение/выключение SO_KEEPALIVE.

Параметры:
on - включить ли опцию keep alive для сокета.
Исключения:
SocketException - если возникла ошибка в базовом протоколе, например, ошибка TCP.
С тех пор:
1.3
См. также:
getKeepAlive()

getKeepAlive

public boolean getKeepAlive()
                     throws SocketException

Проверяет, включен ли SO_KEEPALIVE.

Возвращает:
значение, указывающее, включена ли опция SO_KEEPALIVE.
Исключения:
SocketException - если возникла ошибка в базовом протоколе, например, ошибка TCP.
С тех пор:
1.3
См. также:
setKeepAlive(boolean)

setTrafficClass

public void setTrafficClass(int tc)
                     throws SocketException

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

tc **должен** находиться в диапазоне 0 <= tc <= 255 , иначе будет брошено исключение IllegalArgumentException.

Примечания:

Для протокола интернета версии 4 значение состоит из integer, наименее значащие 8 битов которого представляют значение байта TOS в пакетах IP, отправляемых сокетом. RFC 1349 определяет значения TOS следующим образом:

  • IPTOS_LOWCOST (0x02)
  • IPTOS_RELIABILITY (0x04)
  • IPTOS_THROUGHPUT (0x08)
  • IPTOS_LOWDELAY (0x10)
Последний бит младшего порядка всегда игнорируется, поскольку это соответствует биту MBZ (должен быть нулём).

Установка битов в поле приоритета может привести к SocketException, указывающему, что операция запрещена.

Как указано в RFC 1122 раздел 4.2.4.2, совместимая реализация TCP должна, но не обязана, позволять приложению изменять поле TOS в течение срока действия соединения. Таким образом, возможность изменения поля типа обслуживания после установления TCP-соединения зависит от реализации на базовой платформе. Приложения не должны предполагать, что они могут изменить поле TOS после установления соединения.

Для протокола интернета версии 6 tc – это значение, которое будет помещено в поле sin6_flowinfo заголовка IP.

Параметры:
tc - значение int для битовой комбинации.
Исключения:
SocketException - если произошла ошибка при установке класса трафика или байта типа обслуживания
С тех пор:
1.4
См. также:
getTrafficClass(), SocketOptions.IP_TOS

getTrafficClass

public int getTrafficClass()
                    throws SocketException

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

Поскольку базовая реализация сети может игнорировать установленный с помощью setTrafficClass(int) класс трафика или байт типа обслуживания, этот метод может вернуть значение, отличное от ранее установленного с помощью метода setTrafficClass(int) для этого сокета.

Возвращает:
установленный класс трафика или байт типа обслуживания
Исключения:
SocketException - если произошла ошибка при получении значения класса трафика или байта типа обслуживания.
С тех пор:
1.4
См. также:
setTrafficClass(int), SocketOptions.IP_TOS

setReuseAddress

public void setReuseAddress(boolean on)
                     throws SocketException

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

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

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

При создании сокета начальное значение SO_REUSEADDR отключено.

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

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

getReuseAddress

public boolean getReuseAddress()
                        throws SocketException

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

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

close

public void close()
           throws IOException

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

Любой поток, заблокированный в операции ввода-вывода с этим сокетом, выбросит SocketException.

После закрытия сокета он недоступен для дальнейшего использования в сети (т.е. его нельзя перезасоединить или перепривязать). Необходимо создать новый сокет.

Закрытие этого сокета также закроет потоки ввода InputStream и вывода OutputStream этого сокета.

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

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

shutdownInput

public void shutdownInput()
                   throws IOException

Устанавливает поток ввода этого сокета в состояние "конец потока". Любые данные, отправленные на сторону ввода сокета, будут подтверждены, а затем тихо отброшены.

Если вы читаете из потока ввода сокета после вызова этого метода на сокете, метод available потока вернёт 0, а метод read вернёт значение -1 (конец потока).

Исключения:
IOException - если при закрытии сокета произошла ошибка ввода-вывода.
С тех пор:
1.3
См. также:
shutdownOutput(), close(), setSoLinger(boolean, int), isInputShutdown()

shutdownOutput

public void shutdownOutput()
                    throws IOException

Отключает поток вывода для этого сокета. Для TCP-сокета любые ранее записанные данные будут отправлены, за которым следует стандартная последовательность завершения соединения TCP. Если вы записываете в поток вывода сокета после вызова shutdownOutput() для сокета, поток выбросит IOException.

Выбрасывает:
IOException - если при закрытии этого сокета произошла ошибка ввода-вывода.
С момента:
1.3
См. также:
shutdownInput(), close(), setSoLinger(boolean, int), isOutputShutdown()

toString

public String toString()

Преобразует этот сокет в String.

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

isConnected

public boolean isConnected()

Возвращает состояние подключения сокета.

Примечание: закрытие сокета не очищает его состояние подключения, что означает, что этот метод вернёт true для закрытого сокета (см. isClosed()), если он был успешно подключен до закрытия.

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

isBound

public boolean isBound()

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

Примечание: закрытие сокета не очищает его состояние привязки, что означает, что этот метод вернёт true для закрытого сокета (см. isClosed()), если он был успешно привязан до закрытия.

Возвращает:
true, если сокет успешно привязан к адресу
С момента:
1.4
См. также:
bind(java.net.SocketAddress)

isClosed

public boolean isClosed()

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

Возвращает:
true, если сокет закрыт
С момента:
1.4
См. также:
close()

isInputShutdown

public boolean isInputShutdown()

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

Возвращает:
true, если ввод сокета закрыт
С момента:
1.4
См. также:
shutdownInput()

isOutputShutdown

public boolean isOutputShutdown()

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

Возвращает:
true, если вывод сокета закрыт
С момента:
1.4
См. также:
shutdownOutput()

setSocketImplFactory

public static void setSocketImplFactory(SocketImplFactory fac)
                                 throws IOException

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

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

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

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

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

setPerformancePreferences

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

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

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

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

Вызов этого метода после подключения к этому сокету не повлияет.

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

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API