SocketChannel 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
面向流的连接套接字的可选通道。
[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”<>caption style=“display:none”>Socket options</caption<>thead><tr><th scope=“col”>Option Name</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<>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<>tr><th scope=“row”>java.net.StandardSocketOptions#SO_LINGER SO_LINGER</th如果存在数据(仅在<阻塞模式下配置)/td/tr<>tr th scope=“row”java.net.StandardSocketOptions#TCP_NODELAY TCP_NODELAY></th><td>>< Disable the Nagle algorithm </td/tr<>>><</table></blockquote> Additional(特定于实现)选项,则关闭 td<> Linger。><>
套接字通道可以安全地供多个并发线程使用。 它们支持并发读取和写入,但最多一个线程可能正在读取,最多一个线程可能在任意给定时间写入。 和#connect connect#finishConnect finishConnect方法相互同步,并且尝试在调用其中一种方法正在进行时启动读取或写入操作将阻塞,直到该调用完成。
在 1.4 中添加。
Java文档java.nio.channels.SocketChannel。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。
构造函数
| 名称 | 说明 |
|---|---|
| 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 for Android 基础结构,不打算直接从代码使用。 |
| ThresholdType |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
方法
显式接口实现
| 名称 | 说明 |
|---|---|
| IJavaPeerable.Disposed() |
面向流的连接套接字的可选通道。 (继承自 Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
面向流的连接套接字的可选通道。 (继承自 Object) |
| IJavaPeerable.Finalized() |
面向流的连接套接字的可选通道。 (继承自 Object) |
| IJavaPeerable.JniManagedPeerState |
面向流的连接套接字的可选通道。 (继承自 Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
面向流的连接套接字的可选通道。 (继承自 Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
面向流的连接套接字的可选通道。 (继承自 Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
面向流的连接套接字的可选通道。 (继承自 Object) |
扩展方法
| 名称 | 说明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
获取实例 |
| JavaAs<TResult>(IJavaPeerable) |
尝试强制 |
| JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
| JavaCast<TResult>(IJavaObject) |
面向流的连接套接字的可选通道。 |
| ReadAsync(IReadableByteChannel, ByteBuffer) |
面向流的连接套接字的可选通道。 |
| ReadAsync(IScatteringByteChannel, ByteBuffer[], Int32, Int32) |
面向流的连接套接字的可选通道。 |
| ReadAsync(IScatteringByteChannel, ByteBuffer[]) |
面向流的连接套接字的可选通道。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
尝试强制 |
| WriteAsync(IGatheringByteChannel, ByteBuffer[], Int32, Int32) |
面向流的连接套接字的可选通道。 |
| WriteAsync(IGatheringByteChannel, ByteBuffer[]) |
面向流的连接套接字的可选通道。 |
| WriteAsync(IWritableByteChannel, ByteBuffer) |
面向流的连接套接字的可选通道。 |