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
- 繼承
- 屬性
- 實作
備註
數據流導向連接套接字的異步通道。
異步套接字通道會以兩種方式之一建立。 新建立 AsynchronousSocketChannel 的方法是由叫用這個類別所定義的其中 #open open 一個方法所建立。 新建立的通道已開啟,但尚未連線。 AsynchronousSocketChannel當連接到的套接字時,會建立連線。AsynchronousServerSocketChannel 無法為任意、預先存在的 java.net.Socket socket建立異步套接字通道。
新建立的通道會藉由叫用其 #connect connect 方法來連接;一旦連接,通道就會維持連線,直到關閉為止。 是否連接套接字通道,都可以藉由叫用其 #getRemoteAddress getRemoteAddress 方法來決定。 嘗試在未連線的通道上叫用 I/O 作業,將會導致 NotYetConnectedException 擲回 。
此類型的通道可供多個並行線程使用。 它們支援並行讀取和寫入,不過最多一個讀取作業和一個寫入作業隨時都可以未完成。 如果執行緒在先前的讀取作業完成之前起始讀取作業, ReadPendingException 則會擲回 。 同樣地,嘗試在先前的寫入完成之前起始寫入作業將會擲回 WritePendingException。
套接字選項是使用 #setOption(SocketOption,Object) setOption 方法來設定。 異步套接字通道支援下列選項:<blockquote<>數據表類別=“striped”><caption style=“display:none”>Socket options</caption<>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> 套接字傳送的大小buffer </td/tr tr<<>>th scope=“row”><java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF/th><td> 套接字接收緩衝區 </td><<>/<<>>tr tr th scope=“row”/th td> Keep connection alive </td<>/tr><<>tr th scope=“row”><<>java.net.StandardSocketOptions#SO_KEEPALIVE SO_KEEPALIVE<java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR>/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.AsynchronousSocketChannelJava 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
建構函式
| AsynchronousSocketChannel(AsynchronousChannelProvider) |
初始化這個類別的新執行個體。 |
| AsynchronousSocketChannel(IntPtr, JniHandleOwnership) |
數據流導向連接套接字的異步通道。 |
屬性
| Class |
傳回這個 |
| Handle |
基礎Android實例的句柄。 (繼承來源 Object) |
| IsOpen |
數據流導向連接套接字的異步通道。 |
| JniIdentityHashCode |
數據流導向連接套接字的異步通道。 (繼承來源 Object) |
| JniPeerMembers |
數據流導向連接套接字的異步通道。 |
| LocalAddress |
數據流導向連接套接字的異步通道。 |
| PeerReference |
數據流導向連接套接字的異步通道。 (繼承來源 Object) |
| RemoteAddress |
數據流導向連接套接字的異步通道。 |
| ThresholdClass |
數據流導向連接套接字的異步通道。 |
| ThresholdType |
數據流導向連接套接字的異步通道。 |
方法
明確介面實作
| 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) |
數據流導向連接套接字的異步通道。 |