Share via


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 。 新建立的通道已開啟,但尚未連線。 當連接到 的通訊端 AsynchronousServerSocketChannel 時,就會建立連線 AsynchronousSocketChannel 。 無法為任意、既有 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 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 ><<> th scope=「row」/ <> th td > Keep connection alive < /td <> /tr >><< th scope=「row」 java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR>><<java.net.StandardSocketOptions#SO_KEEPALIVE SO_KEEPALIVE /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 > 逾時 < /h2>

#read(ByteBuffer,long,TimeUnit,Object,CompletionHandler) read這個類別定義的 和 #write(ByteBuffer,long,TimeUnit,Object,CompletionHandler) write 方法允許在起始讀取或寫入作業時指定逾時。 如果在作業完成之前經過逾時,作業就會完成,但例外 InterruptedByTimeoutException 狀況是 。 逾時可能會讓通道或基礎連線處於不一致的狀態。 如果實作無法保證未從通道讀取位元組,則會將通道放入實作特定的 < em 錯誤狀態 < /em >> 。 後續嘗試起始 read 作業會導致擲回未指定的執行時間例外狀況。 同樣地,如果 write 作業逾時且實作無法保證位元組尚未寫入通道,則進一步嘗試通道 write 會導致擲回未指定的執行時間例外狀況。 當逾時經過時,不會定義 I/O 作業的 ByteBuffer 、 或 緩衝區序列的狀態。 應該捨棄緩衝區,或至少要小心,以確保通道保持開啟時,不會存取緩衝區。 接受逾時參數的所有方法都會將小於或等於零的值視為表示 I/O 作業不會逾時。

已在 1.7 中新增。

java.nio.channels.AsynchronousSocketChannel JAVA 檔。

此頁面的部分是根據 原始碼專案所建立和共用的工作進行修改,並根據中所述的詞彙使用。

建構函式

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 > notified < /em > 或 < em > interrupted < /em > 來喚醒。

(繼承來源 Object)
Wait(Int64)

讓目前的執行緒等到喚醒為止,通常是 < 透過 em > notified < /em 或 em > interrupted < /em >> ,或 < 直到經過一定數量的即時為止。

(繼承來源 Object)
Wait(Int64, Int32)

讓目前的執行緒等到喚醒為止,通常是 < 透過 em > notified < /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)

資料流程導向連接通訊端的非同步通道。

適用於