Spec-Zone.ru › OpenJDK 8

Класс SocketChannel

  • java.lang.Object
    • java.nio.channels.spi.AbstractInterruptibleChannel
      • java.nio.channels.SelectableChannel
        • java.nio.channels.spi.AbstractSelectableChannel
          • java.nio.channels.SocketChannel
Все реализованные интерфейсы:
Closeable, AutoCloseable, ByteChannel, Channel, GatheringByteChannel, InterruptibleChannel, NetworkChannel, ReadableByteChannel, ScatteringByteChannel, WritableByteChannel

public abstract class SocketChannel
extends AbstractSelectableChannel
implements ByteChannel, ScatteringByteChannel, GatheringByteChannel, NetworkChannel

Выбираемый канал для сокетов с потоковым соединением.

Канал сокета создаётся путём вызова одного из методов open этого класса. Создать канал для произвольного, существующего сокета невозможно. Новосозданный канал сокета открыт, но ещё не подключён. Попытка вызвать операцию ввода-вывода на неподключённом канале приведёт к выбрасыванию исключения NotYetConnectedException. Канал сокета можно подключить, вызвав его метод connect; после подключения канал сокета остаётся подключённым до его закрытия. Подключён ли канал сокета можно определить, вызвав метод isConnected.

Каналы сокетов поддерживают неблокирующее подключение: канал сокета может быть создан, и процесс установления связи с удалённым сокетом может быть инициирован методом connect для последующего завершения методом finishConnect. Процесс подключения в данный момент можно определить, вызвав метод isConnectionPending.

Каналы сокетов поддерживают асинхронное закрытие, что аналогично асинхронной операции закрытия, указанной в классе Channel. Если входная сторона сокета закрывается одной нитью, в то время как другая нить заблокирована в операции чтения из канала сокета, операция чтения в заблокированной нити завершится без чтения каких-либо байтов и вернёт -1. Если выходная сторона сокета закрывается одной нитью, в то время как другая нить заблокирована в операции записи в канал сокета, заблокированная нить получит AsynchronousCloseException.

Параметры сокета настраиваются с помощью метода setOption. Каналы сокетов поддерживают следующие параметры:

Имя параметра Описание
SO_SNDBUF Размер буфера отправки сокета
SO_RCVBUF Размер буфера приёма сокета
SO_KEEPALIVE Поддерживать соединение активным
SO_REUSEADDR Повторное использование адреса
SO_LINGER Задержка при закрытии, если присутствуют данные (только при настройке в блокирующем режиме)
TCP_NODELAY Отключение алгоритма Нагла
Дополнительные (специфичные для реализации) параметры также могут быть поддерживаемы.

Каналы сокетов безопасны для использования в нескольких потоках одновременно. Они поддерживают одновременное чтение и запись, хотя в любой момент времени может быть только один поток чтения и один поток записи. Методы connect и finishConnect взаимно синхронизируются, и попытка начать операцию чтения или записи во время выполнения одного из этих методов будет заблокирована до завершения этого вызова.

С:
1.4

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

Модификатор Конструктор и описание
protected SocketChannel(SelectorProvider provider)

Инициализирует новый экземпляр этого класса.

Методы

Модификатор и тип Метод и описание
abstract SocketChannel bind(SocketAddress local)

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

abstract boolean connect(SocketAddress remote)

Подключает сокет этого канала.

abstract boolean finishConnect()

Завершает процесс подключения канала сокета.

abstract SocketAddress getLocalAddress()

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

abstract SocketAddress getRemoteAddress()

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

abstract boolean isConnected()

Указывает, подключён ли сетевой сокет этого канала.

abstract boolean isConnectionPending()

Указывает, выполняется ли операция подключения к этому каналу.

static SocketChannel open()

Открывает канал сокета.

static SocketChannel open(SocketAddress remote)

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

abstract int read(ByteBuffer dst)

Читает последовательность байтов из этого канала в заданный буфер.

long read(ByteBuffer[] dsts)

Читает последовательность байтов из этого канала в заданные буферы.

abstract long read(ByteBuffer[] dsts, int offset, int length)

Читает последовательность байтов из этого канала в подпоследовательность заданных буферов.

abstract <T> SocketChannel setOption(SocketOption<T> name, T value)

Устанавливает значение параметра сокета.

abstract SocketChannel shutdownInput()

Закрывает соединение для чтения без закрытия канала.

abstract SocketChannel shutdownOutput()

Закрывает соединение для записи без закрытия канала.

abstract Socket socket()

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

int validOps()

Возвращает набор операций, идентифицирующих поддерживаемые операции канала.

abstract int write(ByteBuffer src)

Записывает последовательность байтов в этот канал из заданного буфера.

long write(ByteBuffer[] srcs)

Записывает последовательность байтов в этот канал из заданных буферов.

abstract long write(ByteBuffer[] srcs, int offset, int length)

Записывает последовательность байтов в этот канал из подпоследовательности заданных буферов.

Методы, унаследованные от класса java.nio.channels.spi.AbstractSelectableChannel

blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, register

Методы, унаследованные от класса java.nio.channels.SelectableChannel

register

Методы, унаследованные от класса java.nio.channels.spi.AbstractInterruptibleChannel

begin, close, end, isOpen

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

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

Методы, унаследованные от интерфейса java.nio.channels.Channel

close, isOpen

Методы, унаследованные от интерфейса java.nio.channels.NetworkChannel

getOption, supportedOptions

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

SocketChannel

protected SocketChannel(SelectorProvider provider)

Инициализирует новый экземпляр этого класса.

Параметры:
provider - Предоставщик, который создал этот канал

Методы

open

public static SocketChannel open()
                          throws IOException

Открывает сокет-канал.

Новый канал создается путем вызова метода openSocketChannel системного предопределенного объекта SelectorProvider.

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

open

public static SocketChannel open(SocketAddress remote)
                          throws IOException

Открывает сокет-канал и подключает его к удаленному адресу.

Этот метод-удобство работает так, как если бы был вызван метод open(), вызывался метод connect для полученного сокет-канала, передавая ему remote, а затем возвращал этот канал.

Параметры:
remote - Удаленный адрес, к которому должен быть подключен новый канал
Возвращает:
Новый и подключенный сокет-канал
Исключение:
AsynchronousCloseException - Если другой поток закрывает этот канал во время выполнения операции подключения
ClosedByInterruptException - Если другой поток прерывает текущий поток во время выполнения операции подключения, тем самым закрывая канал и устанавливая состояние прерывания текущего потока
UnresolvedAddressException - Если предоставленный удаленный адрес не полностью разрешен
UnsupportedAddressTypeException - Если тип предоставленного удаленного адреса не поддерживается
SecurityException - Если установлен менеджер безопасности и он не разрешает доступ к указанному удаленному узлу
IOException - Если произошла другая ошибка ввода-вывода

validOps

public final int validOps()

Возвращает набор операций, определяющий поддерживаемые операции этого канала.

Сокет-каналы поддерживают подключение, чтение и запись, поэтому этот метод возвращает (SelectionKey.OP_CONNECT | SelectionKey.OP_READ | SelectionKey.OP_WRITE).

Определено в:
validOps в классе SelectableChannel
Возвращает:
Набор допустимых операций

bind

public abstract SocketChannel bind(SocketAddress local)
                            throws IOException

Описание скопировано из интерфейса: NetworkChannel

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

Этот метод используется для установления связи между сокетом и локальным адресом. После установления связи сокет остается связанным до закрытия канала. Если параметр local имеет значение null, то сокет будет привязан к автоматически назначенному адресу.

Определено в:
bind в интерфейсе NetworkChannel
Параметры:
local - Адрес для привязки сокета, или null для привязки сокета к автоматически назначенному адресу сокета
Возвращает:
Этот канал
Исключение:
ConnectionPendingException - Если в данный момент на этом канале уже выполняется операция подключения в режиме без блокировки
AlreadyBoundException - Если сокет уже привязан
UnsupportedAddressTypeException - Если тип указанного адреса не поддерживается
ClosedChannelException - Если канал закрыт
IOException - Если произошла другая ошибка ввода-вывода
SecurityException - Если установлен менеджер безопасности и его метод checkListen запрещает операцию
С:
1.7
См. также:
NetworkChannel.getLocalAddress()

setOption

public abstract <T> SocketChannel setOption(SocketOption<T> name,
                                            T value)
                                     throws IOException

Описание скопировано из интерфейса: NetworkChannel

Устанавливает значение параметра сокета.

Определено в:
setOption в интерфейсе NetworkChannel
Параметры типа:
T - Тип значения параметра сокета
Параметры:
name - Параметр сокета
value - Значение параметра сокета. Значение null может быть допустимым значением для некоторых параметров сокета.
Возвращает:
Этот канал
Исключение:
UnsupportedOperationException - Если параметр сокета не поддерживается этим каналом
IllegalArgumentException - Если значение не является допустимым значением для этого параметра сокета
ClosedChannelException - Если этот канал закрыт
IOException - Если произошла ошибка ввода-вывода
С:
1.7
См. также:
StandardSocketOptions

shutdownInput

public abstract SocketChannel shutdownInput()
                                     throws IOException

Закрывает соединение для чтения без закрытия канала.

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

Возвращает:
Канал
Исключение:
NotYetConnectedException - Если этот канал еще не подключен
ClosedChannelException - Если этот канал закрыт
IOException - Если произошла другая ошибка ввода-вывода
С:
1.7

shutdownOutput

public abstract SocketChannel shutdownOutput()
                                      throws IOException

Закрывает соединение для записи без закрытия канала.

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

Возвращает:
Канал
Исключение:
NotYetConnectedException - Если этот канал еще не подключен
ClosedChannelException - Если этот канал закрыт
IOException - Если произошла другая ошибка ввода-вывода
С:
1.7

socket

public abstract Socket socket()

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

Возвращаемый объект не будет объявлять какие-либо публичные методы, которые не объявлены в классе Socket.

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

isConnected

public abstract boolean isConnected()

Определяет, подключен ли сетевой сокет этого канала.

Возвращает:
true если и только если сетевой сокет этого канала open и подключен

isConnectionPending

public abstract boolean isConnectionPending()

Определяет, происходит ли операция подключения на этом канале.

Возвращает:
true если и только если операция подключения была инициирована на этом канале, но еще не завершена вызовом метода finishConnect

connect

public abstract boolean connect(SocketAddress remote)
                         throws IOException

Подключает сокет этого канала.

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

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

Этот метод выполняет точно такие же проверки безопасности, как и класс Socket. То есть, если установлен менеджер безопасности, то этот метод проверяет, разрешает ли его метод checkConnect подключение к адресу и номеру порта указанного удаленного узла.

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

Параметры:
remote - Удаленный адрес, к которому должен быть подключен этот канал
Возвращает:
true если подключение было установлено, false если этот канал находится в режиме без блокировки и операция подключения выполняется
Исключение:
AlreadyConnectedException - Если этот канал уже подключен
ConnectionPendingException - Если в данный момент на этом канале уже выполняется операция подключения в режиме без блокировки
ClosedChannelException - Если этот канал закрыт
AsynchronousCloseException - Если другой поток закрывает этот канал во время выполнения операции подключения
ClosedByInterruptException - Если другой поток прерывает текущий поток во время выполнения операции подключения, тем самым закрывая канал и устанавливая состояние прерывания текущего потока
UnresolvedAddressException - Если предоставленный удаленный адрес не полностью разрешен
UnsupportedAddressTypeException - Если тип предоставленного удаленного адреса не поддерживается
SecurityException - Если установлен менеджер безопасности и он не разрешает доступ к указанному удаленному узлу
IOException - Если произошла другая ошибка ввода-вывода

finishConnect

public abstract boolean finishConnect()
                               throws IOException

Завершает процесс подключения канала сокета.

Операция подключения без блокировки инициируется путем перевода канала сокета в режим без блокировки и вызова его метода connect. После того, как подключение установлено или попытка завершилась неудачей, канал сокета становится подключимым, и этот метод может быть вызван для завершения последовательности подключения. Если операция подключения завершилась неудачей, вызов этого метода приведет к выбрасыванию соответствующего исключения IOException.

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

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

Возвращает:
true тогда и только тогда, когда сокет этого канала теперь подключен
Выбрасывает:
NoConnectionPendingException - Если этот канал не подключен и операция подключения не была инициирована
ClosedChannelException - Если этот канал закрыт
AsynchronousCloseException - Если другой поток закрывает этот канал во время операции подключения
ClosedByInterruptException - Если другой поток прерывает текущий поток во время операции подключения, тем самым закрывая канал и устанавливая состояние прерывания текущего потока
IOException - Если произошла какая-либо другая ошибка ввода-вывода

getRemoteAddress

public abstract SocketAddress getRemoteAddress()
                                        throws IOException

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

Если канал привязан и подключен к адресу сокета Интернет-протокола, значение, возвращаемое этим методом, имеет тип InetSocketAddress.

Возвращает:
Удаленный адрес; null если сокет канала не подключен
Выбрасывает:
ClosedChannelException - Если канал закрыт
IOException - Если произошла ошибка ввода-вывода
Since:
1.7

read

public abstract int read(ByteBuffer dst)
                  throws IOException

Описание скопировано из интерфейса: ReadableByteChannel

Считывает последовательность байтов из этого канала в предоставленный буфер.

Производится попытка считать до r байтов из канала, где r — количество байтов, оставшихся в буфере, то есть dst.remaining(), в момент вызова этого метода.

Предположим, что считывается последовательность байтов длиной n, где 0 <= n <= r. Эта последовательность байтов будет передана в буфер таким образом, что первый байт в последовательности будет по индексу p, а последний — по индексу p + n - 1, где p — позиция буфера в момент вызова этого метода. После возврата позиция буфера будет равна p + n; его предел не изменится.

Операция чтения может не заполнить буфер и, фактически, может вообще не прочитать байты. Будет ли это сделано, зависит от природы и состояния канала. Например, канал сокета в режиме без блокировки не может прочитать больше байтов, чем немедленно доступны из входного буфера сокета; аналогично, канал файла не может прочитать больше байтов, чем осталось в файле. Однако гарантируется, что если канал находится в режиме блокировки и в буфере остается по крайней мере один байт, этот метод будет блокироваться до тех пор, пока не будет прочитан хотя бы один байт.

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

Спецификация:
read в интерфейсе ReadableByteChannel
Параметры:
dst - Буфер, в который будут передаваться байты
Возвращает:
Количество прочитанных байтов, возможно ноль, или -1 , если канал достиг конца потока
Выбрасывает:
NotYetConnectedException - Если этот канал еще не подключен
ClosedChannelException - Если этот канал закрыт
AsynchronousCloseException - Если другой поток закрывает этот канал во время операции чтения
ClosedByInterruptException - Если другой поток прерывает текущий поток во время операции чтения, тем самым закрывая канал и устанавливая состояние прерывания текущего потока
IOException - Если произошла какая-либо другая ошибка ввода-вывода

read

public abstract long read(ByteBuffer[] dsts,
                          int offset,
                          int length)
                   throws IOException

Описание скопировано из интерфейса: ScatteringByteChannel

Считывает последовательность байтов из этого канала в подпоследовательность заданных буферов.

Вызов этого метода пытается прочитать до r байтов из этого канала, где r — общее количество оставшихся байтов в заданной подпоследовательности массива буферов, то есть

dsts[offset].remaining()
    + dsts[offset+1].remaining()
    + ... + dsts[offset+length-1].remaining()
в момент вызова этого метода.

Предположим, что считывается последовательность байтов длиной n, где 0 <= n <= r. До dsts[offset].remaining() байтов этой последовательности передаются в буфер dsts[offset], до следующих dsts[offset+1].remaining() байтов — в буфер dsts[offset+1], и так далее, пока вся последовательность байтов не будет передана в заданные буферы. Как можно больше байтов передается в каждый буфер, следовательно, конечная позиция каждого обновленного буфера, за исключением последнего обновленного буфера, гарантированно равна пределу этого буфера.

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

Спецификация:
read в интерфейсе ScatteringByteChannel
Параметры:
dsts - Буферы, в которые будут передаваться байты
offset - Смещение в массиве буферов первого буфера, в который будут передаваться байты; должно быть неотрицательным и не превышать dsts.length
length - Максимальное количество буферов для доступа; должно быть неотрицательным и не превышать dsts.length - offset
Возвращает:
Количество прочитанных байтов, возможно ноль, или -1 , если канал достиг конца потока
Выбрасывает:
NotYetConnectedException - Если этот канал еще не подключен
ClosedChannelException - Если этот канал закрыт
AsynchronousCloseException - Если другой поток закрывает этот канал во время операции чтения
ClosedByInterruptException - Если другой поток прерывает текущий поток во время операции чтения, тем самым закрывая канал и устанавливая состояние прерывания текущего потока
IOException - Если произошла какая-либо другая ошибка ввода-вывода

read

public final long read(ByteBuffer[] dsts)
                throws IOException

Описание скопировано из интерфейса: ScatteringByteChannel

Считывает последовательность байтов из этого канала в заданные буферы.

Вызов этого метода в форме c.read(dsts) ведет себя точно так же, как вызов

c.read(dsts, 0, dsts.length);
Спецификация:
read в интерфейсе ScatteringByteChannel
Параметры:
dsts - Буферы, в которые будут передаваться байты
Возвращает:
Количество прочитанных байтов, возможно ноль, или -1 , если канал достиг конца потока
Выбрасывает:
NotYetConnectedException - Если этот канал еще не подключен
ClosedChannelException - Если этот канал закрыт
AsynchronousCloseException - Если другой поток закрывает этот канал во время операции чтения
ClosedByInterruptException - Если другой поток прерывает текущий поток во время операции чтения, тем самым закрывая канал и устанавливая состояние прерывания текущего потока
IOException - Если произошла какая-либо другая ошибка ввода-вывода

write

public abstract int write(ByteBuffer src)
                   throws IOException

Описание скопировано из интерфейса: WritableByteChannel

Записывает последовательность байтов в этот канал из заданного буфера.

Производится попытка записать до r байтов в канал, где r — количество оставшихся байтов в буфере, то есть src.remaining(), в момент вызова этого метода.

Предположим, что записывается последовательность байтов длиной n, где 0 <= n <= r. Эта последовательность байтов будет передана из буфера, начиная с индекса p, где p — позиция буфера в момент вызова этого метода; индекс последнего записанного байта будет p + n - 1. После возврата позиция буфера будет равна p + n; его предел не изменится.

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

Этот метод может быть вызван в любое время. Однако, если другой поток уже инициировал операцию записи на этом канале, вызов этого метода будет блокироваться до завершения первой операции.

Указано:
write в интерфейсе WritableByteChannel
Параметры:
src - Буфер, из которого должны быть извлечены байты
Возвращает:
Количество записанных байтов, возможно ноль
Исключения:
NotYetConnectedException - Если этот канал ещё не подключён
ClosedChannelException - Если этот канал закрыт
AsynchronousCloseException - Если другой поток закрывает этот канал во время операции записи
ClosedByInterruptException - Если другой поток прерывает текущий поток во время операции записи, тем самым закрывая канал и устанавливая статус прерывания текущего потока
IOException - Если произошла другая ошибка ввода/вывода

write

public abstract long write(ByteBuffer[] srcs,
                           int offset,
                           int length)
                    throws IOException

Описание скопировано из интерфейса: GatheringByteChannel

Записывает последовательность байтов в этот канал из подпоследовательности заданных буферов.

Производится попытка записать до r байтов в этот канал, где r — общее количество байтов, оставшихся в указанной подпоследовательности заданного массива буферов, то есть,

srcs[offset].remaining()
    + srcs[offset+1].remaining()
    + ... + srcs[offset+length-1].remaining()
в момент вызова этого метода.

Предположим, что записана последовательность байтов длиной n, где 0 <= n <= r. До первых srcs[offset].remaining() байтов этой последовательности записываются из буфера srcs[offset], до следующих srcs[offset+1].remaining() байтов записываются из буфера srcs[offset+1], и так далее, пока вся последовательность байтов не будет записана. Максимальное возможное количество байтов записывается из каждого буфера, следовательно, конечная позиция каждого обновленного буфера, за исключением последнего обновленного буфера, гарантированно равна пределу этого буфера.

Если не указано иное, операция записи вернётся только после записи всех r запрошенных байтов. Некоторые типы каналов, в зависимости от их состояния, могут записать только часть байтов или вообще ничего. Например, сокет-канал в режиме «без ожидания» не может записать больше байтов, чем свободно в буфере вывода сокета.

Этот метод может быть вызван в любое время. Однако, если другой поток уже инициировал операцию записи в этот канал, вызов этого метода будет заблокирован до завершения первой операции.

Указано:
write в интерфейсе GatheringByteChannel
Параметры:
srcs - Буферы, из которых должны быть извлечены байты
offset - Смещение в массиве буферов первого буфера, из которого должны быть извлечены байты; должно быть неотрицательным и не больше srcs.length
length - Максимальное количество буферов для доступа; должно быть неотрицательным и не больше srcs.length - offset
Возвращает:
Количество записанных байтов, возможно ноль
Исключения:
NotYetConnectedException - Если этот канал ещё не подключён
ClosedChannelException - Если этот канал закрыт
AsynchronousCloseException - Если другой поток закрывает этот канал во время операции записи
ClosedByInterruptException - Если другой поток прерывает текущий поток во время операции записи, тем самым закрывая канал и устанавливая статус прерывания текущего потока
IOException - Если произошла другая ошибка ввода/вывода

write

public final long write(ByteBuffer[] srcs)
                 throws IOException

Описание скопировано из интерфейса: GatheringByteChannel

Записывает последовательность байтов в этот канал из заданных буферов.

Вызов этого метода в виде c.write(srcs) ведет себя точно так же, как вызов

c.write(srcs, 0, srcs.length);
Указано:
write в интерфейсе GatheringByteChannel
Параметры:
srcs - Буферы, из которых должны быть извлечены байты
Возвращает:
Количество записанных байтов, возможно ноль
Исключения:
NotYetConnectedException - Если этот канал ещё не подключён
ClosedChannelException - Если этот канал закрыт
AsynchronousCloseException - Если другой поток закрывает этот канал во время операции записи
ClosedByInterruptException - Если другой поток прерывает текущий поток во время операции записи, тем самым закрывая канал и устанавливая статус прерывания текущего потока
IOException - Если произошла другая ошибка ввода/вывода

getLocalAddress

public abstract SocketAddress getLocalAddress()
                                       throws IOException

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

Если канал bound к адресу сокета протокола Интернета, то возвращаемое значение этого метода имеет тип InetSocketAddress.

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

Указано:
getLocalAddress в интерфейсе NetworkChannel
Возвращает:
Адрес SocketAddress, к которому привязан сокет, или SocketAddress , представляющий обратный адрес, если доступ запрещён менеджером безопасности, или null если сокет канала не привязан
Исключения:
ClosedChannelException - Если канал закрыт
IOException - Если произошла ошибка ввода/вывода

© 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