AsynchronousSocketChannel.Write 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
Write(ByteBuffer, Int64, TimeUnit, Object, ICompletionHandler)
从给定缓冲区将字节序列写入此通道。
[Android.Runtime.Register("write", "(Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "GetWrite_Ljava_nio_ByteBuffer_JLjava_util_concurrent_TimeUnit_Ljava_lang_Object_Ljava_nio_channels_CompletionHandler_Handler", ApiSince=26)]
[Java.Interop.JavaTypeParameters(new System.String[] { "A" })]
public abstract void Write(Java.Nio.ByteBuffer? src, long timeout, Java.Util.Concurrent.TimeUnit? unit, Java.Lang.Object? attachment, Java.Nio.Channels.ICompletionHandler? handler);
[<Android.Runtime.Register("write", "(Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "GetWrite_Ljava_nio_ByteBuffer_JLjava_util_concurrent_TimeUnit_Ljava_lang_Object_Ljava_nio_channels_CompletionHandler_Handler", ApiSince=26)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "A" })>]
abstract member Write : Java.Nio.ByteBuffer * int64 * Java.Util.Concurrent.TimeUnit * Java.Lang.Object * Java.Nio.Channels.ICompletionHandler -> unit
参数
- src
- ByteBuffer
要从中检索字节的缓冲区
- timeout
- Int64
I/O 操作完成的最长时间
- unit
- TimeUnit
参数的时间单位timeout
- attachment
- Object
要附加到 I/O 操作的对象;可以是 null
- handler
- ICompletionHandler
用于使用结果的处理程序
- 属性
注解
从给定缓冲区将字节序列写入此通道。
此方法启动异步写入操作,以从给定缓冲区将字节序列写入此通道。 参数 handler 是写入操作完成时调用的完成处理程序(或失败)。 传递给完成处理程序的结果是写入的字节数。
如果指定了超时,并且操作完成前的超时时间过长,则会完成异常 InterruptedByTimeoutException。 如果发生超时,并且实现无法保证未写入字节,或者不会从给定缓冲区写入通道,则进一步尝试写入通道将导致引发非特定运行时异常。
否则,此方法的工作方式与 AsynchronousByteChannel#write(ByteBuffer,Object,CompletionHandler) 该方法相同。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。
适用于
Write(ByteBuffer)
[Android.Runtime.Register("write", "(Ljava/nio/ByteBuffer;)Ljava/util/concurrent/Future;", "GetWrite_Ljava_nio_ByteBuffer_Handler", ApiSince=26)]
public abstract Java.Util.Concurrent.IFuture? Write(Java.Nio.ByteBuffer? src);
[<Android.Runtime.Register("write", "(Ljava/nio/ByteBuffer;)Ljava/util/concurrent/Future;", "GetWrite_Ljava_nio_ByteBuffer_Handler", ApiSince=26)>]
abstract member Write : Java.Nio.ByteBuffer -> Java.Util.Concurrent.IFuture
参数
- src
- ByteBuffer
返回
实现
- 属性
注解
Java文档java.nio.channels.AsynchronousSocketChannel.write(java.nio.ByteBuffer)。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。
适用于
Write(ByteBuffer, Object, ICompletionHandler)
[Android.Runtime.Register("write", "(Ljava/nio/ByteBuffer;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "", ApiSince=26)]
[Java.Interop.JavaTypeParameters(new System.String[] { "A" })]
public void Write(Java.Nio.ByteBuffer? src, Java.Lang.Object? attachment, Java.Nio.Channels.ICompletionHandler? handler);
[<Android.Runtime.Register("write", "(Ljava/nio/ByteBuffer;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "", ApiSince=26)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "A" })>]
abstract member Write : Java.Nio.ByteBuffer * Java.Lang.Object * Java.Nio.Channels.ICompletionHandler -> unit
override this.Write : Java.Nio.ByteBuffer * Java.Lang.Object * Java.Nio.Channels.ICompletionHandler -> unit
参数
- src
- ByteBuffer
- attachment
- Object
- handler
- ICompletionHandler
实现
- 属性
注解
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。
适用于
Write(ByteBuffer[], Int32, Int32, Int64, TimeUnit, Object, ICompletionHandler)
从给定缓冲区的子序列将字节序列写入此通道。
[Android.Runtime.Register("write", "([Ljava/nio/ByteBuffer;IIJLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "GetWrite_arrayLjava_nio_ByteBuffer_IIJLjava_util_concurrent_TimeUnit_Ljava_lang_Object_Ljava_nio_channels_CompletionHandler_Handler", ApiSince=26)]
[Java.Interop.JavaTypeParameters(new System.String[] { "A" })]
public abstract void Write(Java.Nio.ByteBuffer[]? srcs, int offset, int length, long timeout, Java.Util.Concurrent.TimeUnit? unit, Java.Lang.Object? attachment, Java.Nio.Channels.ICompletionHandler? handler);
[<Android.Runtime.Register("write", "([Ljava/nio/ByteBuffer;IIJLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "GetWrite_arrayLjava_nio_ByteBuffer_IIJLjava_util_concurrent_TimeUnit_Ljava_lang_Object_Ljava_nio_channels_CompletionHandler_Handler", ApiSince=26)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "A" })>]
abstract member Write : Java.Nio.ByteBuffer[] * int * int * int64 * Java.Util.Concurrent.TimeUnit * Java.Lang.Object * Java.Nio.Channels.ICompletionHandler -> unit
参数
- srcs
- ByteBuffer[]
要从中检索字节的缓冲区
- offset
- Int32
要从中检索字节的第一个缓冲区的缓冲区数组中的偏移量;必须为非负值且不大于 srcs.length
- length
- Int32
要访问的最大缓冲区数;必须为非负值且不大于 srcs.length - offset
- timeout
- Int64
I/O 操作完成的最长时间
- unit
- TimeUnit
参数的时间单位timeout
- attachment
- Object
要附加到 I/O 操作的对象;可以是 null
- handler
- ICompletionHandler
用于使用结果的处理程序
- 属性
注解
从给定缓冲区的子序列将字节序列写入此通道。 此操作(有时称为 <em>收集写入</em>)在实现将数据分组到由一个或多个固定长度标头组成的段(后跟可变长度正文)的网络协议时,通常很有用。 参数 handler 是写入操作完成时调用的完成处理程序(或失败)。 传递给完成处理程序的结果是写入的字节数。
此方法将最多 r 字节写入此通道,其中 r 是给定缓冲区数组的指定子序列中剩余的字节总数,即,
<blockquote>
srcs[offset].remaining()
+ srcs[offset+1].remaining()
+ ... + srcs[offset+length-1].remaining()
</blockquote>
正在尝试写入。
假设写入了长度 n 的字节序列,其中 0 < n <= r. 最多从缓冲区写入此序列的第一srcs[offset].remaining()个字节,最多从缓冲区srcs[offset]srcs[offset+1]写入下一srcs[offset+1].remaining()个字节,依此类推,直到写入整个字节序列。 从每个缓冲区写入尽可能多的字节,因此,每个更新缓冲区(上次更新的缓冲区除外)的最终位置保证等于该缓冲区的限制。 基础操作系统可能会对 I/O 操作中使用的缓冲区数施加限制。 如果缓冲区数(剩余字节数)超过此限制,则会使用操作系统允许的最大缓冲区数执行 I/O 操作。
如果指定了超时,并且操作完成前的超时时间过长,则会完成异常 InterruptedByTimeoutException。 如果发生超时,并且实现无法保证未写入字节,或者不会从给定缓冲区写入通道,则进一步尝试写入通道将导致引发非特定运行时异常。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。