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”><描述文字 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<>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#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>错误状态<中>。 后续尝试启动 read
操作会导致引发未指定的运行时异常。 同样,如果 write
操作超时,并且实现无法保证字节未写入通道,则进一步尝试 write
写入通道会导致引发未指定的运行时异常。 超时时间过后,未定义 I/O 操作的 ByteBuffer
、 或缓冲区序列的状态。 应丢弃缓冲区,或者至少必须小心,以确保在通道保持打开状态时不会访问缓冲区。 接受超时参数的所有方法都将小于或等于零的值视为 I/O 操作不会超时。
在 1.7 中添加。
的 java.nio.channels.AsynchronousSocketChannel
Java 文档。
此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。
构造函数
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) |
面向流的连接套接字的异步通道。 |