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 一来创建套接字通道。 无法为任意预先存在的套接字创建通道。 新创建的套接字通道已打开,但尚未连接。 尝试在未连接的通道上调用 I/O 操作将导致 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 scope=“col”>Option Name</th<>th scope=“col”>Description</th<>/tr></thead><tbody><tr<>th scope=“row”java.net.StandardSocketOptions#SO_SNDBUF SO_SNDBUF></th><Td>套接字发送缓冲区 </td<>/tr>><<th scope=“row”<>java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF/th<>td> 套接字接收缓冲区<的大小 /td<>/tr<>th<>scope=“row”><java.net.StandardSocketOptions#SO_KEEPALIVE SO_KEEPALIVE/th><td> Keep connection alive </td<>/tr<>><th scope=“row”><java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR/th><td> Re-use address </td<>/tr><><th scope=“row”>java.net.StandardSocketOptions#SO_LINGER SO_LINGER<在阻止模式下<配置时,如果数据 (存在,则关闭时) /td<>/tr><><th scope=“row”java.net.StandardSocketOptions#TCP_NODELAY TCP_NODELAY<>/th<>td> 禁用 Nagle 算法 </td></tr></tbody></table></blockquote> 其他 (实现特定) 选项也可能受支持。><>

套接字通道可以安全地供多个并发线程使用。 它们支持并发读取和写入,但最多一个线程可以在任意给定时间读取,最多一个线程可以写入。 和 #connect connect#finishConnect finishConnect 方法相互同步,并且尝试在调用其中一种方法正在进行时启动读取或写入操作,将阻止该调用完成。

在 1.4 中添加。

java.nio.channels.SocketChannelJava 文档。

此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。

构造函数

SocketChannel(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

SocketChannel(SelectorProvider)

初始化此类的新实例。

属性

Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
IsBlocking

指示此通道是否处于阻止模式。

(继承自 AbstractSelectableChannel)
IsConnected

指示此通道的套接字是否已连接。

IsConnectionPending

指示此通道的套接字是否仍在尝试连接。

IsOpen

如果此通道处于打开状态,则返回 true。

(继承自 AbstractInterruptibleChannel)
IsRegistered

指示此通道是否注册到一个或多个选择器。

(继承自 AbstractSelectableChannel)
JniIdentityHashCode

面向流的连接套接字的可选通道。

(继承自 Object)
JniPeerMembers

面向流的连接套接字的可选通道。

LocalAddress

面向流的连接套接字的可选通道。

PeerReference

面向流的连接套接字的可选通道。

(继承自 Object)
RemoteAddress

面向流的连接套接字的可选通道。

ThresholdClass

此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。

ThresholdType

此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。

方法

Begin()

标记可能无限期阻止的 I/O 操作的开始。

(继承自 AbstractInterruptibleChannel)
Bind(SocketAddress)

在 1 中添加。

BlockingLock()

获取用于同步 和 configureBlocking的对象register

(继承自 AbstractSelectableChannel)
Clone()

创建并返回此对象的副本。

(继承自 Object)
Close()

关闭此通道。

(继承自 AbstractInterruptibleChannel)
ConfigureBlocking(Boolean)

调整此通道的阻止模式。

(继承自 AbstractSelectableChannel)
Connect(SocketAddress)

连接此通道的套接字。

ConnectAsync(SocketAddress)

面向流的连接套接字的可选通道。

Dispose()

面向流的连接套接字的可选通道。

(继承自 Object)
Dispose(Boolean)

面向流的连接套接字的可选通道。

(继承自 Object)
End(Boolean)

标记可能无限期阻止的 I/O 操作的结束。

(继承自 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()

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>。<>

(继承自 Object)
Wait(Int64)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 Object)
Wait(Int64, Int32)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 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)

面向流的连接套接字的可选通道。

适用于