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
。 新建立的通道已開啟,但尚未連線。 當連接到 的通訊端 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 |
傳回這個 |
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) |
資料流程導向連接通訊端的非同步通道。 |