Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class DatagramChannel extends AbstractSelectableChannel implements ByteChannel, ScatteringByteChannel, GatheringByteChannel, MulticastChannel
Канал дейтаграммы создается, вызывая один из open
методы этого class. Не возможно создать канал для произвольного, существующего ранее сокета дейтаграммы. Недавно создаваемый канал дейтаграммы открыт, но не соединенный. Канал дейтаграммы не должен быть соединен для send
и receive
методы, которые будут использоваться. Канал дейтаграммы может быть соединен, вызывая connect
метод, чтобы избежать издержек проверок безопасности, иначе выполняется как часть каждого отправлять и получить работу. Канал дейтаграммы должен быть соединен, чтобы использовать read
и write
методы, так как те методы не принимают или возвращают адреса сокета.
После того, как соединенный, канал дейтаграммы остается соединенным, пока он не разъединяется или закрывается. Соединяется ли канал дейтаграммы, может быть определен, вызывая isConnected
метод.
Опции сокета конфигурируются, используя setOption
метод. Канал дейтаграммы к интернет-сокету Протокола поддерживает следующие опции:
Дополнительный (определенная реализация) опции могут также поддерживаться.
Имя опции Описание SO_SNDBUF
Размер сокета отправляет буфер SO_RCVBUF
Размер сокета получает буфер SO_REUSEADDR
Адрес повторного использования SO_BROADCAST
Позвольте передачу широковещательных дейтаграмм IP_TOS
Тип Службы (ТОСЕС) октет в интернет-Протоколе (IP) заголовок IP_MULTICAST_IF
Сетевой интерфейс для интернет-Протокола (IP) многоадресные дейтаграммы IP_MULTICAST_TTL
Время-к-живому для интернет-Протокола (IP) многоадресные дейтаграммы IP_MULTICAST_LOOP
Обратная петля для интернет-Протокола (IP) многоадресные дейтаграммы
Каналы дейтаграммы безопасны для использования многократными параллельными потоками. Они поддерживают параллельное чтение и запись, хотя самое большее один поток может читать, и самое большее один поток может писать в любой момент времени.
Модификатор | Конструктор и Описание |
---|---|
protected |
DatagramChannel(SelectorProvider provider)
Инициализирует новый экземпляр этого class.
|
Модификатор и Тип | Метод и Описание |
---|---|
abstract DatagramChannel |
bind(SocketAddress local)
Связывает сокет канала с локальным адресом.
|
abstract DatagramChannel |
connect(SocketAddress remote)
Соединяет сокет этого канала.
|
abstract DatagramChannel |
disconnect()
Разъединения сокет этого канала.
|
abstract SocketAddress |
getRemoteAddress()
Возвращает удаленный адрес, с которым соединяется сокет этого канала.
|
abstract boolean |
isConnected()
Говорит, соединяется ли сокет этого канала.
|
static DatagramChannel |
open()
Открывает канал дейтаграммы.
|
static DatagramChannel |
open(ProtocolFamily family)
Открывает канал дейтаграммы.
|
abstract int |
read(ByteBuffer dst)
Читает дейтаграмму из этого канала.
|
long |
read(ByteBuffer[] dsts)
Читает дейтаграмму из этого канала.
|
abstract long |
read(ByteBuffer[] dsts, int offset, int length)
Читает дейтаграмму из этого канала.
|
abstract SocketAddress |
receive(ByteBuffer dst)
Получает дейтаграмму через этот канал.
|
abstract int |
send(ByteBuffer src, SocketAddress target)
Отправляет дейтаграмму через этот канал.
|
abstract <T> DatagramChannel |
setOption(SocketOption<T> name, T value)
Устанавливает значение опции сокета.
|
abstract DatagramSocket |
socket()
Получает сокет дейтаграммы, связанный с этим каналом.
|
int |
validOps()
Возвращает набор работы, идентифицирующий поддерживаемые операции этого канала.
|
abstract int |
write(ByteBuffer src)
Пишет дейтаграмма в этот канал.
|
long |
write(ByteBuffer[] srcs)
Пишет дейтаграмма в этот канал.
|
abstract long |
write(ByteBuffer[] srcs, int offset, int length)
Пишет дейтаграмма в этот канал.
|
blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, register
регистр
begin, close, end, isOpen
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
close, join, join
getLocalAddress, getOption, supportedOptions
protected DatagramChannel(SelectorProvider provider)
public static DatagramChannel open() throws IOException
Новый канал создается, вызывая openDatagramChannel
метод значения по умолчанию в масштабе всей системы SelectorProvider
объект. Канал не будет соединен.
ProtocolFamily
из сокета канала платформа (и возможно конфигурация) зависимый и поэтому неуказанный. open
позволяет семейству протокола быть выбранным, открывая канал дейтаграммы, и должен использоваться, чтобы открыть каналы дейтаграммы, которые предназначаются для интернет-многоадресной передачи Протокола.
IOException
- Если ошибка ввода-вывода происходитpublic static DatagramChannel open(ProtocolFamily family) throws IOException
family
параметр используется, чтобы определить ProtocolFamily
. Если канал дейтаграммы должен использоваться для IP, мультислучающегося тогда, это должно соответствовать типу адреса многоадресных групп, к которым присоединится этот канал.
Новый канал создается, вызывая openDatagramChannel
метод значения по умолчанию в масштабе всей системы SelectorProvider
объект. Канал не будет соединен.
family
- Семейство протоколаUnsupportedOperationException
- Если указанное семейство протокола не поддерживается. Например, предположите, что параметр определяется как StandardProtocolFamily.INET6
но IPv6 не включается на платформе.IOException
- Если ошибка ввода-вывода происходитpublic final int validOps()
Чтение поддержки каналов дейтаграммы и запись, таким образом, этот метод возвращает ( SelectionKey.OP_READ
| SelectionKey.OP_WRITE
).
validOps
в class SelectableChannel
public abstract DatagramChannel bind(SocketAddress local) throws IOException
NetworkChannel
Этот метод используется, чтобы установить ассоциацию между сокетом и локальным адресом. Как только ассоциация устанавливается тогда, сокет остается связанным, пока канал не закрывается. Если local
у параметра есть значение null
тогда сокет будет связан с адресом, который присваивается автоматически.
bind
в интерфейсе NetworkChannel
local
- Адрес, чтобы связать сокет, или null
связывать сокет с автоматически присвоенным адресом сокетаAlreadyBoundException
- Если сокет уже связываетсяUnsupportedAddressTypeException
- Если тип данного адреса не поддерживаетсяClosedChannelException
- Если канал закрываетсяIOException
- Если некоторая другая ошибка ввода-вывода происходитSecurityException
- Если менеджер безопасности был установлен и checkListen
метод отрицает работуNetworkChannel.getLocalAddress()
public abstract <T> DatagramChannel setOption(SocketOption<T> name, T value) throws IOException
NetworkChannel
setOption
в интерфейсе NetworkChannel
name
- Опция сокетаvalue
- Значение опции сокета. Значение null
может быть допустимое значение для некоторых опций сокета.UnsupportedOperationException
- Если опция сокета не поддерживается этим каналомIllegalArgumentException
- Если значение не является допустимым значением для этой опции сокетаClosedChannelException
- Если этот канал закрываетсяIOException
- Если ошибка ввода-вывода происходитStandardSocketOptions
public abstract DatagramSocket socket()
Возвращенный объект не будет объявлять открытых методов, которые не объявляются в DatagramSocket
class.
public abstract boolean isConnected()
true
если, и только если, сокет этого канала open
и соединенныйpublic abstract DatagramChannel connect(SocketAddress remote) throws IOException
Сокет канала конфигурируется так, чтобы он только получил дейтаграммы из, и отправил дейтаграммы, данный удаленный равноправный адрес. После того, как соединенный, дейтаграммы не могут быть получены из или отправлены любому другому адресу. Сокет дейтаграммы остается соединенным, пока он явно не разъединяется или пока он закрывается.
Этот метод выполняет точно те же самые проверки безопасности как connect
метод DatagramSocket
class. Таким образом, если менеджер безопасности был установлен тогда, этот метод проверяет что checkAccept
и checkConnect
методы разрешают дейтаграммам быть полученными из и отправленными, соответственно, данный удаленный адрес.
В любое время может быть вызван этот метод. Это не будет иметь никакого эффекта на операции чтения или операции записи, которые уже происходят в настоящее время, что это вызывается. Если сокет этого канала не будет связан тогда, то этот метод сначала заставит сокет быть связанным с адресом, который присваивается автоматически, как будто вызов bind
метод с параметром null
.
remote
- Удаленный адрес, с которым должен быть соединен этот каналClosedChannelException
- Если этот канал закрываетсяAsynchronousCloseException
- Если другой поток закрывает этот канал, в то время как соединить работа происходитClosedByInterruptException
- Если другой поток прерывает текущий поток, в то время как соединить работа происходит, таким образом закрывая канал и устанавливая состояние прерывания текущего потокаSecurityException
- Если менеджер безопасности был установлен, и он не разрешает доступ к данному удаленному адресуIOException
- Если некоторая другая ошибка ввода-вывода происходитpublic abstract DatagramChannel disconnect() throws IOException
Сокет канала конфигурируется так, чтобы он мог получить дейтаграммы из, и отправил дейтаграммы, любой удаленный адрес, пока менеджер безопасности, если установлено, разрешает это.
В любое время может быть вызван этот метод. Это не будет иметь никакого эффекта на операции чтения или операции записи, которые уже происходят в настоящее время, что это вызывается.
Если сокет этого канала не соединяется, или если канал закрывается, то вызов этого метода не имеет никакого эффекта.
IOException
- Если некоторая другая ошибка ввода-вывода происходитpublic abstract SocketAddress getRemoteAddress() throws IOException
null
если сокет канала не соединяетсяClosedChannelException
- Если канал закрываетсяIOException
- Если ошибка ввода-вывода происходитpublic abstract SocketAddress receive(ByteBuffer dst) throws IOException
Если дейтаграмма сразу доступна, или если этот канал находится в блокировании режима, и каждый в конечном счете становится доступным, то дейтаграмма копируется в данный буфер байта, и его исходный адрес возвращается. Если этот канал находится в неблокировании режима, и дейтаграмма не сразу доступна тогда, этот метод сразу возвращает null.
Дейтаграмма передается в данный буфер байта, запускающийся в его текущей позиции, как будто постоянным клиентом read
работа. Если есть меньше байтов, остающихся в буфере, чем обязаны содержать дейтаграмму тогда, остаток от дейтаграммы тихо отбрасывается.
Этот метод выполняет точно те же самые проверки безопасности как receive
метод DatagramSocket
class. Таким образом, если сокет не соединяется с определенным удаленным адресом, и менеджер безопасности был установлен тогда для каждой дейтаграммы, полученной, этот метод проверяет, что адрес источника и номер порта разрешаются менеджером безопасности checkAccept
метод. Издержек этой проверки защиты может избежать первое соединение сокета через connect
метод.
В любое время может быть вызван этот метод. Если другой поток уже инициировал операцию чтения на этот канал, однако, то вызов этого метода блокирует, пока первая работа не полна. Если сокет этого канала не будет связан тогда, то этот метод сначала заставит сокет быть связанным с адресом, который присваивается автоматически, как будто вызов bind
метод с параметром null
.
dst
- Буфер, в который должна быть передана дейтаграммаClosedChannelException
- Если этот канал закрываетсяAsynchronousCloseException
- Если другой поток закрывает этот канал, в то время как операция чтения происходитClosedByInterruptException
- Если другой поток прерывает текущий поток, в то время как операция чтения происходит, таким образом закрывая канал и устанавливая состояние прерывания текущего потокаSecurityException
- Если менеджер безопасности был установлен, и он не разрешает дейтаграммам быть принятыми от отправителя дейтаграммыIOException
- Если некоторая другая ошибка ввода-вывода происходитpublic abstract int send(ByteBuffer src, SocketAddress target) throws IOException
Если этот канал находится в неблокировании режима и есть достаточная комната в базовом буфере вывода, или если этот канал находится в блокировании режима, и достаточная комната становится доступной, то остающиеся байты в данном буфере передаются как единственная дейтаграмма к данному целевому адресу.
Дейтаграмма передается от буфера байта как будто постоянным клиентом write
работа.
Этот метод выполняет точно те же самые проверки безопасности как send
метод DatagramSocket
class. Таким образом, если сокет не соединяется с определенным удаленным адресом, и менеджер безопасности был установлен тогда для каждой дейтаграммы, отправленной этот метод, проверяет, что целевой адрес и номер порта разрешаются менеджером безопасности checkConnect
метод. Издержек этой проверки защиты может избежать первое соединение сокета через connect
метод.
В любое время может быть вызван этот метод. Если другой поток уже инициировал операцию записи на этот канал, однако, то вызов этого метода блокирует, пока первая работа не полна. Если сокет этого канала не будет связан тогда, то этот метод сначала заставит сокет быть связанным с адресом, который присваивается автоматически, как будто, вызывая bind
метод с параметром null
.
src
- Буфер, содержащий дейтаграмму, которая будет отправленаtarget
- Адрес, которому должна быть отправлена дейтаграммаClosedChannelException
- Если этот канал закрываетсяAsynchronousCloseException
- Если другой поток закрывает этот канал, в то время как операция чтения происходитClosedByInterruptException
- Если другой поток прерывает текущий поток, в то время как операция чтения происходит, таким образом закрывая канал и устанавливая состояние прерывания текущего потокаSecurityException
- Если менеджер безопасности был установлен, и он не разрешает дейтаграммам быть отправленными данному адресуIOException
- Если некоторая другая ошибка ввода-вывода происходитpublic abstract int read(ByteBuffer dst) throws IOException
Этот метод может только быть вызван, если сокет этого канала соединяется, и это только принимает дейтаграммы от коллеги сокета. Если есть больше байтов в дейтаграмме, чем остаются в данном буфере тогда, остаток от дейтаграммы тихо отбрасывается. Иначе этот метод ведет себя точно как определено в ReadableByteChannel
интерфейс.
read
в интерфейсе ReadableByteChannel
dst
- Буфер, в который должны быть переданы байтыNotYetConnectedException
- Если сокет этого канала не соединяетсяClosedChannelException
- Если этот канал закрываетсяAsynchronousCloseException
- Если другой поток закрывает этот канал, в то время как операция чтения происходитClosedByInterruptException
- Если другой поток прерывает текущий поток, в то время как операция чтения происходит, таким образом закрывая канал и устанавливая состояние прерывания текущего потокаIOException
- Если некоторая другая ошибка ввода-вывода происходитpublic abstract long read(ByteBuffer[] dsts, int offset, int length) throws IOException
Этот метод может только быть вызван, если сокет этого канала соединяется, и это только принимает дейтаграммы от коллеги сокета. Если есть больше байтов в дейтаграмме, чем остаются в данных буферах тогда, остаток от дейтаграммы тихо отбрасывается. Иначе этот метод ведет себя точно как определено в ScatteringByteChannel
интерфейс.
read
в интерфейсе ScatteringByteChannel
dsts
- Буферы, в которые должны быть переданы байтыoffset
- Смещение в пределах буферного массива первого буфера, в который должны быть переданы байты; должно быть неотрицательным и не больше чем dsts.lengthlength
- Максимальное количество буферов, которые будут получены доступ; должно быть неотрицательным и не больше чем dsts.length - offsetNotYetConnectedException
- Если сокет этого канала не соединяетсяClosedChannelException
- Если этот канал закрываетсяAsynchronousCloseException
- Если другой поток закрывает этот канал, в то время как операция чтения происходитClosedByInterruptException
- Если другой поток прерывает текущий поток, в то время как операция чтения происходит, таким образом закрывая канал и устанавливая состояние прерывания текущего потокаIOException
- Если некоторая другая ошибка ввода-вывода происходитpublic final long read(ByteBuffer[] dsts) throws IOException
Этот метод может только быть вызван, если сокет этого канала соединяется, и это только принимает дейтаграммы от коллеги сокета. Если есть больше байтов в дейтаграмме, чем остаются в данных буферах тогда, остаток от дейтаграммы тихо отбрасывается. Иначе этот метод ведет себя точно как определено в ScatteringByteChannel
интерфейс.
read
в интерфейсе ScatteringByteChannel
dsts
- Буферы, в которые должны быть переданы байтыNotYetConnectedException
- Если сокет этого канала не соединяетсяClosedChannelException
- Если этот канал закрываетсяAsynchronousCloseException
- Если другой поток закрывает этот канал, в то время как операция чтения происходитClosedByInterruptException
- Если другой поток прерывает текущий поток, в то время как операция чтения происходит, таким образом закрывая канал и устанавливая состояние прерывания текущего потокаIOException
- Если некоторая другая ошибка ввода-вывода происходитpublic abstract int write(ByteBuffer src) throws IOException
Этот метод может только быть вызван, если сокет этого канала соединяется, когда это отправляет дейтаграммы непосредственно коллеге сокета. Иначе это ведет себя точно как определено в WritableByteChannel
интерфейс.
write
в интерфейсе WritableByteChannel
src
- Буфер, от которого должны быть получены байтыNotYetConnectedException
- Если сокет этого канала не соединяетсяClosedChannelException
- Если этот канал закрываетсяAsynchronousCloseException
- Если другой поток закрывает этот канал, в то время как операция записи происходитClosedByInterruptException
- Если другой поток прерывает текущий поток, в то время как операция записи происходит, таким образом закрывая канал и устанавливая состояние прерывания текущего потокаIOException
- Если некоторая другая ошибка ввода-вывода происходитpublic abstract long write(ByteBuffer[] srcs, int offset, int length) throws IOException
Этот метод может только быть вызван, если сокет этого канала соединяется, когда это отправляет дейтаграммы непосредственно коллеге сокета. Иначе это ведет себя точно как определено в GatheringByteChannel
интерфейс.
write
в интерфейсе GatheringByteChannel
srcs
- Буферы, от которых должны быть получены байтыoffset
- Смещение в пределах буферного массива первого буфера, от которого должны быть получены байты; должно быть неотрицательным и не больше чем srcs.lengthlength
- Максимальное количество буферов, которые будут получены доступ; должно быть неотрицательным и не больше чем srcs.length - offsetNotYetConnectedException
- Если сокет этого канала не соединяетсяClosedChannelException
- Если этот канал закрываетсяAsynchronousCloseException
- Если другой поток закрывает этот канал, в то время как операция записи происходитClosedByInterruptException
- Если другой поток прерывает текущий поток, в то время как операция записи происходит, таким образом закрывая канал и устанавливая состояние прерывания текущего потокаIOException
- Если некоторая другая ошибка ввода-вывода происходитpublic final long write(ByteBuffer[] srcs) throws IOException
Этот метод может только быть вызван, если сокет этого канала соединяется, когда это отправляет дейтаграммы непосредственно коллеге сокета. Иначе это ведет себя точно как определено в GatheringByteChannel
интерфейс.
write
в интерфейсе GatheringByteChannel
srcs
- Буферы, от которых должны быть получены байтыNotYetConnectedException
- Если сокет этого канала не соединяетсяClosedChannelException
- Если этот канал закрываетсяAsynchronousCloseException
- Если другой поток закрывает этот канал, в то время как операция записи происходитClosedByInterruptException
- Если другой поток прерывает текущий поток, в то время как операция записи происходит, таким образом закрывая канал и устанавливая состояние прерывания текущего потокаIOException
- Если некоторая другая ошибка ввода-вывода происходит
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92