AsynchronousSocketChannel 类

定义

面向流的连接套接字的异步通道。

[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
继承
AsynchronousSocketChannel
属性
实现

注解

面向流的连接套接字的异步通道。

异步套接字通道通过以下两种方式之一创建。 通过调用此类定义的方法之一来创建#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.AsynchronousSocketChannelJava 文档。

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

构造函数

AsynchronousSocketChannel(AsynchronousChannelProvider)

初始化此类的新实例。

AsynchronousSocketChannel(IntPtr, JniHandleOwnership)

面向流的连接套接字的异步通道。

属性

Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
IsOpen

面向流的连接套接字的异步通道。

JniIdentityHashCode

面向流的连接套接字的异步通道。

(继承自 Object)
JniPeerMembers

面向流的连接套接字的异步通道。

LocalAddress

面向流的连接套接字的异步通道。

PeerReference

面向流的连接套接字的异步通道。

(继承自 Object)
RemoteAddress

面向流的连接套接字的异步通道。

ThresholdClass

面向流的连接套接字的异步通道。

ThresholdType

面向流的连接套接字的异步通道。

方法

Bind(SocketAddress)

面向流的连接套接字的异步通道。

Clone()

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

(继承自 Object)
Close()

关闭此通道。

Connect(SocketAddress)

连接此通道。

Connect(SocketAddress, Object, ICompletionHandler)

连接此通道。

Dispose()

面向流的连接套接字的异步通道。

(继承自 Object)
Dispose(Boolean)

面向流的连接套接字的异步通道。

(继承自 Object)
Equals(Object)

指示某个其他对象是否“等于”此对象。

(继承自 Object)
GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
JavaFinalize()

当垃圾回收确定不再引用对象时,由垃圾回收器对对象调用。

(继承自 Object)
Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
Open()

打开异步套接字通道。

Open(AsynchronousChannelGroup)

打开异步套接字通道。

Provider()

返回创建此通道的提供程序。

Read(ByteBuffer)

面向流的连接套接字的异步通道。

Read(ByteBuffer, Int64, TimeUnit, Object, ICompletionHandler)

将字节序列从此通道读入给定缓冲区。

Read(ByteBuffer, Object, ICompletionHandler)

面向流的连接套接字的异步通道。

Read(ByteBuffer[], Int32, Int32, Int64, TimeUnit, Object, ICompletionHandler)

将字节序列从此通道读取到给定缓冲区的子序列中。

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
SetOption(ISocketOption, Object)

面向流的连接套接字的异步通道。

ShutdownInput()

在不关闭通道的情况下关闭连接进行读取。

ShutdownOutput()

在不关闭通道的情况下关闭连接以写入。

ToArray<T>()

面向流的连接套接字的异步通道。

(继承自 Object)
ToString()

返回对象的字符串表示形式。

(继承自 Object)
UnregisterFromRuntime()

面向流的连接套接字的异步通道。

(继承自 Object)
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, Int64, TimeUnit, Object, ICompletionHandler)

将字节序列从给定缓冲区写入此通道。

Write(ByteBuffer, Object, ICompletionHandler)

面向流的连接套接字的异步通道。

Write(ByteBuffer[], Int32, Int32, Int64, TimeUnit, Object, ICompletionHandler)

从给定缓冲区的子序列向此通道写入字节序列。

显式接口实现

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)

面向流的连接套接字的异步通道。

适用于