AsynchronousSocketChannel 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
面向流的连接套接字的异步通道。
[Android.Runtime.Register("java/nio/channels/AsynchronousSocketChannel", ApiSince=26, DoNotGenerateAcw=true)]
public abstract class AsynchronousSocketChannel : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.Nio.Channels.IAsynchronousByteChannel
[<Android.Runtime.Register("java/nio/channels/AsynchronousSocketChannel", ApiSince=26, DoNotGenerateAcw=true)>]
type AsynchronousSocketChannel = class
inherit Object
interface IAsynchronousByteChannel
interface IAsynchronousChannel
interface IChannel
interface ICloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 继承
- 属性
- 实现
注解
面向流的连接套接字的异步通道。
异步套接字通道以两种方式之一创建。 通过调用此类定义的其中一#open open
种方法来创建新创建AsynchronousSocketChannel
的方法。 新创建的通道已打开,但尚未连接。 AsynchronousSocketChannel
连接是在连接到套接字AsynchronousServerSocketChannel
时创建的。 无法为任意预先存在的 java.net.Socket socket
任意套接字通道创建异步套接字通道。
通过调用方法 #connect connect
来连接新创建的通道;连接后,通道将一直保持连接状态,直到关闭。 是否连接套接字通道可以通过调用其 #getRemoteAddress getRemoteAddress
方法来确定。 尝试对未连接的通道调用 I/O 操作将导致 NotYetConnectedException
引发。
此类型的通道可供多个并发线程安全使用。 它们支持并发读取和写入,但最多可以一次执行一个读取操作和一个写入操作。 如果线程在上一个读取操作完成之前启动读取操作,则会引发一个 ReadPendingException
读取操作。 同样,尝试在上一次写入完成之前启动写入操作将引发一个 WritePendingException
。
套接字选项是使用 #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> 套接字发送的大小buffer </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 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#TCP_NODELAY TCP_NODELAY
</th><td> 禁用 Nagle 算法 </td></tr></tbody></table></blockquote> 附加(特定于实现)选项也可能受支持。
<h2>Timeouts</h2>
#read(ByteBuffer,long,TimeUnit,Object,CompletionHandler) read
此类定义的和#write(ByteBuffer,long,TimeUnit,Object,CompletionHandler) write
方法允许在启动读取或写入操作时指定超时。 如果在操作完成之前超时,则该操作将完成,但异常 InterruptedByTimeoutException
。 超时可能会使通道或基础连接处于不一致状态。 如果实现无法保证从通道中读取字节,则将通道置于特定于实现的 <em>错误状态</em> 中。 后续尝试启动 read
操作会导致引发未指定的运行时异常。 同样,如果 write
操作超时,并且实现无法保证未写入通道的字节,则进一步尝试 write
到通道会导致引发未指定的运行时异常。 超时时间过后,不会为 I/O 操作定义 I/O 操作的状态 ByteBuffer
或缓冲区序列。 应丢弃缓冲区,或者至少要小心,以确保在通道保持打开状态时不会访问缓冲区。 接受超时参数的所有方法将值视为小于或等于零的值,这意味着 I/O 操作不会超时。
已在 1.7 中添加。
适用于 . 的 java.nio.channels.AsynchronousSocketChannel
Java 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
构造函数
AsynchronousSocketChannel(AsynchronousChannelProvider) |
初始化此类的新实例。 |
AsynchronousSocketChannel(IntPtr, JniHandleOwnership) |
面向流的连接套接字的异步通道。 |
属性
Class |
返回此 |
Handle |
基础 Android 实例的句柄。 (继承自 Object) |
IsOpen |
面向流的连接套接字的异步通道。 |
JniIdentityHashCode |
面向流的连接套接字的异步通道。 (继承自 Object) |
JniPeerMembers |
面向流的连接套接字的异步通道。 |
LocalAddress |
面向流的连接套接字的异步通道。 |
PeerReference |
面向流的连接套接字的异步通道。 (继承自 Object) |
RemoteAddress |
面向流的连接套接字的异步通道。 |
ThresholdClass |
面向流的连接套接字的异步通道。 |
ThresholdType |
面向流的连接套接字的异步通道。 |
方法
显式接口实现
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) |
面向流的连接套接字的异步通道。 |