語言

AsynchronousSocketChannel.Write 方法

定義

多載

名稱 Description
Write(ByteBuffer, Int64, TimeUnit, Object, ICompletionHandler)

從給定的緩衝區寫入一串位元組到該通道。

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

從給定緩衝區的子序列中寫入一串位元組到此通道。

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) 一樣。

Java 文件 java.nio.channels.AsynchronousSocketChannel.write(java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>)

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於

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

參數

傳回

實作

屬性

備註

Java 文件 java.nio.channels.AsynchronousSocketChannel.write(java.nio.ByteBuffer)

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於

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

參數

attachment
Object

實作

屬性

備註

Java 文件 java.nio.channels.AsynchronousSocketChannel.write(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>)

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於

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 是該緩衝區陣列指定子序列中剩餘的位元組總數,也就是說,

<引用>

srcs[offset].remaining()
                + srcs[offset+1].remaining()
                + ... + srcs[offset+length-1].remaining()

</區塊引用>

在嘗試書寫的那一刻。

假設寫入一個長度為 n 的位元組序列,其中 0& nbsp;< n <= R。 此序列的前幾個 srcs[offset].remaining() 位元組從緩衝 srcs[offset]區寫入,直到下一個 srcs[offset+1].remaining() 位元組從緩衝 srcs[offset+1]區寫入,依此類推,直到整個位元組序列寫入完畢。 每個緩衝區會寫入盡可能多的位元組,因此除了最後更新的緩衝區外,每個更新緩衝區的最終位置都保證等於該緩衝區的限制。 底層作業系統可能會對 I/O 操作中可使用的緩衝區數量設限。 當緩衝區數量(剩餘位元組)超過此限制時,輸入輸出操作即以作業系統允許的最大緩衝區數執行。

若指定逾時且逾時在操作完成前已過,則該逾時在操作完成時有例外 InterruptedByTimeoutException。 若發生逾時,且實作無法保證位元組尚未被寫入或不會從指定緩衝區寫入該通道,則進一步嘗試寫入通道時會拋出一個不特定的執行時例外。

Java 文件 java.nio.channels.AsynchronousSocketChannel.write(java.nio.ByteBuffer[], int, int, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Long, ? super A>)

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於