SocketChannel Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Доступный для выбора канал для потоковых соединительных сокетов.
[Android.Runtime.Register("java/nio/channels/SocketChannel", DoNotGenerateAcw=true)]
public abstract class SocketChannel : Java.Nio.Channels.Spi.AbstractSelectableChannel, IDisposable, Java.Interop.IJavaPeerable, Java.Nio.Channels.IByteChannel, Java.Nio.Channels.IGatheringByteChannel, Java.Nio.Channels.IScatteringByteChannel
[<Android.Runtime.Register("java/nio/channels/SocketChannel", DoNotGenerateAcw=true)>]
type SocketChannel = class
inherit AbstractSelectableChannel
interface IByteChannel
interface IReadableByteChannel
interface IChannel
interface ICloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface IWritableByteChannel
interface IGatheringByteChannel
interface IScatteringByteChannel
- Наследование
- Атрибуты
- Реализации
Комментарии
Доступный для выбора канал для потоковых соединительных сокетов.
Канал сокета создается путем вызова одного из #open open
методов этого класса. Невозможно создать канал для произвольного существующего сокета. Созданный канал сокета открыт, но еще не подключен. Попытка вызвать операцию ввода-вывода в неподключаемом канале NotYetConnectedException
вызовет исключение . Канал сокета можно подключить, вызвав его #connect connect
метод. После подключения канал сокета остается подключенным, пока не будет закрыт. Указывает, подключен ли канал сокета, можно определить, вызвав его #isConnected isConnected
метод .
Каналы сокетов поддерживают неблокирующее подключение: Может быть создан канал сокета, и процесс установления связи с удаленным сокетом может быть инициирован методом #connect connect
для последующего завершения методом #finishConnect finishConnect
. Выполняется ли операция подключения, можно определить, вызвав #isConnectionPending isConnectionPending
метод .
Каналы сокетов поддерживают асинхронное завершение работы, аналогичное асинхронной операции закрытия, указанной Channel
в классе . Если входная сторона сокета завершается одним потоком, а другой поток блокируется операцией чтения в канале сокета, операция чтения в заблокированном потоке завершится без считывания байтов и вернет -1
. Если выходная сторона сокета завершается одним потоком, а другой поток блокируется в операции записи в канале сокета, то заблокированный поток получит .AsynchronousCloseException
Параметры сокета настраиваются с помощью #setOption(SocketOption,Object) setOption
метода . Каналы сокетов поддерживают следующие параметры: <blockquote<>table class="striped"><подпись style="display:none">Socket options</подпись>< thead><tr<>th область="col">Option Name</th<>th область="col">Description</th<>/tr></thead><tbody><tr>th область="row">java.net.StandardSocketOptions#SO_SNDBUF SO_SNDBUF
</th><td> Размер буфера <отправки сокета /td></tr tr<><>th область="row"<>java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF
/th<>td Размер буфера <> приема сокета /td></tr<>tr<>th область="row"java.net.StandardSocketOptions#SO_KEEPALIVE SO_KEEPALIVE
<>/th><td> Сохранить подключение в активном режиме<</Td></tr><tr<>th область="row"java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR
<>/th<>td> Re-use address </td></tr><tr<>th область="row"<java.net.StandardSocketOptions#SO_LINGER SO_LINGER
>/th<>td> Linger при закрытии, если данные присутствуют (при настройке только в режиме блокировки) </td<>/tr tr<><>th область="row"java.net.StandardSocketOptions#TCP_NODELAY TCP_NODELAY
></th><Td> Отключение алгоритма <Nagle /td></tr<>/tbody<>/table></blockquote> Также могут поддерживаться дополнительные параметры (для конкретной реализации).
Каналы сокета безопасны для использования несколькими параллельными потоками. Они поддерживают параллельное чтение и запись, хотя в любой момент времени может выполняться не более одного потока, а в любой момент времени — не более одного потока. #connect connect
Методы и #finishConnect finishConnect
синхронизированы друг с другом, и попытка инициировать операцию чтения или записи при вызове одного из этих методов блокируется до завершения этого вызова.
Добавлено в версии 1.4.
Документация по Java для java.nio.channels.SocketChannel
.
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.
Конструкторы
SocketChannel(IntPtr, JniHandleOwnership) |
Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения. |
SocketChannel(SelectorProvider) |
Инициализирует новый экземпляр этого класса. |
Свойства
Class |
Возвращает класс среды выполнения данного объекта |
Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
IsBlocking |
Указывает, находится ли этот канал в режиме блокировки. (Унаследовано от AbstractSelectableChannel) |
IsConnected |
Указывает, подключен ли сокет этого канала. |
IsConnectionPending |
Указывает, пытается ли сокет этого канала подключиться. |
IsOpen |
Возвращает значение true, если этот канал открыт. (Унаследовано от AbstractInterruptibleChannel) |
IsRegistered |
Указывает, зарегистрирован ли этот канал с помощью одного или нескольких селекторов. (Унаследовано от AbstractSelectableChannel) |
JniIdentityHashCode |
Доступный для выбора канал для потоковых соединительных сокетов. (Унаследовано от Object) |
JniPeerMembers |
Доступный для выбора канал для потоковых соединительных сокетов. |
LocalAddress |
Доступный для выбора канал для потоковых соединительных сокетов. |
PeerReference |
Доступный для выбора канал для потоковых соединительных сокетов. (Унаследовано от Object) |
RemoteAddress |
Доступный для выбора канал для потоковых соединительных сокетов. |
ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
Методы
Begin() |
Отмечает начало операции ввода-вывода, которая может блокироваться на неопределенный срок. (Унаследовано от AbstractInterruptibleChannel) |
Bind(SocketAddress) |
Добавлено в 1. |
BlockingLock() |
Возвращает объект , используемый для синхронизации |
Clone() |
Создает и возвращает копию этого объекта. (Унаследовано от Object) |
Close() |
Закрывает этот канал. (Унаследовано от AbstractInterruptibleChannel) |
ConfigureBlocking(Boolean) |
Настраивает режим блокировки этого канала. (Унаследовано от AbstractSelectableChannel) |
Connect(SocketAddress) |
Подключает сокет этого канала. |
ConnectAsync(SocketAddress) |
Доступный для выбора канал для потоковых соединительных сокетов. |
Dispose() |
Доступный для выбора канал для потоковых соединительных сокетов. (Унаследовано от Object) |
Dispose(Boolean) |
Доступный для выбора канал для потоковых соединительных сокетов. (Унаследовано от Object) |
End(Boolean) |
Отмечает конец операции ввода-вывода, которая может блокироваться на неопределенный срок. (Унаследовано от AbstractInterruptibleChannel) |
Equals(Object) |
Указывает, равен ли какой-то другой объект этому объекту. (Унаследовано от Object) |
FinishConnect() |
Завершает процесс подключения канала сокета. |
FinishConnectAsync() |
Доступный для выбора канал для потоковых соединительных сокетов. |
GetHashCode() |
Возвращает значение хэш-кода для объекта. (Унаследовано от Object) |
ImplCloseChannel() |
Закрывает этот канал. (Унаследовано от AbstractSelectableChannel) |
ImplCloseSelectableChannel() |
Закрывает этот канал с возможностью выбора. (Унаследовано от AbstractSelectableChannel) |
ImplConfigureBlocking(Boolean) |
Настраивает режим блокировки этого канала. (Унаследовано от AbstractSelectableChannel) |
JavaFinalize() |
Вызывается сборщиком мусора для объекта , когда сборка мусора определяет, что больше нет ссылок на объект . (Унаследовано от Object) |
KeyFor(Selector) |
Возвращает ключ выбора этого канала для указанного селектора. (Унаследовано от AbstractSelectableChannel) |
Notify() |
Пробуждает один поток, ожидающий монитора этого объекта. (Унаследовано от Object) |
NotifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. (Унаследовано от Object) |
Open() |
Открывает канал сокета. |
Open(SocketAddress) |
Открывает канал сокета и подключает его к удаленному адресу. |
Provider() |
Возвращает поставщика, создавшего этот канал. (Унаследовано от AbstractSelectableChannel) |
Read(ByteBuffer) |
Считывает байты из этого канала сокета в заданный буфер. |
Read(ByteBuffer[]) |
Считывает байты из этого канала сокета и сохраняет их в указанном массиве буферов. |
Read(ByteBuffer[], Int32, Int32) |
Считывает байты из этого канала сокета в подмножество заданных буферов. |
Register(Selector, Operations) |
Регистрирует этот канал с помощью заданного селектора, возвращая ключ выбора. (Унаследовано от SelectableChannel) |
Register(Selector, Operations, Object) |
Регистрирует этот канал с помощью заданного селектора, возвращая ключ выбора. (Унаследовано от AbstractSelectableChannel) |
SetHandle(IntPtr, JniHandleOwnership) |
Задает свойство Handle. (Унаследовано от Object) |
SetOption(ISocketOption, Object) |
Добавлено в 1. |
ShutdownInput() |
Завершите подключение для чтения без закрытия канала. |
ShutdownOutput() |
Завершите подключение для записи без закрытия канала. |
Socket() |
Извлекает сокет, связанный с этим каналом. |
ToArray<T>() |
Доступный для выбора канал для потоковых соединительных сокетов. (Унаследовано от Object) |
ToString() |
Возвращает строковое представление объекта. (Унаследовано от Object) |
UnregisterFromRuntime() |
Доступный для выбора канал для потоковых соединительных сокетов. (Унаследовано от Object) |
ValidOps() |
Возвращает набор операций, определяющий поддерживаемые операции этого канала. |
Wait() |
Вызывает ожидание текущего потока, пока он не пробудится, как правило, из-за <уведомления><<> или>прерывания или прерывания.>< (Унаследовано от Object) |
Wait(Int64) |
Вызывает ожидание текущего потока, пока он не пробудится, как правило, путем <уведомления><<> или>прерывания или прерывания<> или до истечения определенного количества реального времени. (Унаследовано от Object) |
Wait(Int64, Int32) |
Вызывает ожидание текущего потока, пока он не пробудится, как правило, путем <уведомления><<> или>прерывания или прерывания<> или до истечения определенного количества реального времени. (Унаследовано от Object) |
Write(ByteBuffer) |
Записывает байты из заданного буфера байтов в этот канал сокета. |
Write(ByteBuffer[]) |
Записывает байты из всех заданных буферов байтов в этот канал сокета. |
Write(ByteBuffer[], Int32, Int32) |
Пытается записать подмножество заданных байтов из буферов в этот канал сокета. |
Явные реализации интерфейса
IJavaPeerable.Disposed() |
Доступный для выбора канал для потоковых соединительных сокетов. (Унаследовано от Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Доступный для выбора канал для потоковых соединительных сокетов. (Унаследовано от Object) |
IJavaPeerable.Finalized() |
Доступный для выбора канал для потоковых соединительных сокетов. (Унаследовано от Object) |
IJavaPeerable.JniManagedPeerState |
Доступный для выбора канал для потоковых соединительных сокетов. (Унаследовано от Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Доступный для выбора канал для потоковых соединительных сокетов. (Унаследовано от Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Доступный для выбора канал для потоковых соединительных сокетов. (Унаследовано от Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Доступный для выбора канал для потоковых соединительных сокетов. (Унаследовано от Object) |
Методы расширения
JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверенного средой выполнения Android. |
JavaCast<TResult>(IJavaObject) |
Доступный для выбора канал для потоковых соединительных сокетов. |
GetJniTypeName(IJavaPeerable) |
Доступный для выбора канал для потоковых соединительных сокетов. |
WriteAsync(IGatheringByteChannel, ByteBuffer[]) |
Доступный для выбора канал для потоковых соединительных сокетов. |
WriteAsync(IGatheringByteChannel, ByteBuffer[], Int32, Int32) |
Доступный для выбора канал для потоковых соединительных сокетов. |
ReadAsync(IReadableByteChannel, ByteBuffer) |
Доступный для выбора канал для потоковых соединительных сокетов. |
ReadAsync(IScatteringByteChannel, ByteBuffer[]) |
Доступный для выбора канал для потоковых соединительных сокетов. |
ReadAsync(IScatteringByteChannel, ByteBuffer[], Int32, Int32) |
Доступный для выбора канал для потоковых соединительных сокетов. |
WriteAsync(IWritableByteChannel, ByteBuffer) |
Доступный для выбора канал для потоковых соединительных сокетов. |