AsynchronousSocketChannel 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
一個非同步通道,用於流向連接套接字。
[Android.Runtime.Register("java/nio/channels/AsynchronousSocketChannel", ApiSince=26, DoNotGenerateAcw=true)]
public abstract class AsynchronousSocketChannel : Java.Lang.Object, IDisposable, 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 的 S 是透過調用 #open open 該類別定義的方法之一來建立的。 新建的頻道已開放,但尚未連接。 當連接到一個 AsynchronousSocketChannel的插槽時,就會產生一個連通AsynchronousServerSocketChannel。 無法為任意存在 java.net.Socket socket的 建立非同步套接字通道。
新建立的通道透過呼叫其 #connect connect 方法來連接;一旦連接,通道會保持連線直到關閉。 是否連接套接字通道可透過呼叫其 #getRemoteAddress getRemoteAddress 方法來判斷。 嘗試對未連接的通道呼叫 I/O 操作會導致拋出 A NotYetConnectedException 。
此類通道可安全由多個並行執行緒使用。 它們支援並行讀寫,但最多可同時進行一次讀取與一次寫入操作。 如果執行緒在前一次讀取操作尚未完成前就啟動讀取操作,則會拋出 a ReadPendingException 。 同理,嘗試在前一次寫入完成前啟動寫入操作時,會拋出一個 WritePendingException。
套接字選項是透過此 #setOption(SocketOption,Object) setOption 方法進行配置的。 非同步套接字通道支援以下選項:<blockquote><table class=“striped”caption>< style=“display:none”>socket options</caption><thead><tr><th scope=“col”>Option Name</th><th scope =“col”>Description</th><></thead><tbody><tr><th scope=“row”>java.net.StandardSocketOptions#SO_SNDBUF SO_SNDBUF</th><td> socket 發送大小buffer </td></tr><tr th><scope = “row”>java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF</th><td> socket 接收緩衝區<大小 /td></tr><tr><th scope =“row”>java.net.StandardSocketOptions#SO_KEEPALIVE SO_KEEPALIVE</th><td> 保持連線存活 </td></tr><tr th><scope = “row”>java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR</th><td> 重用位址 </td></tr><tr th><scope = “row”>/thjava.net.StandardSocketOptions#TCP_NODELAY TCP_NODELAY<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 寫入通道時會拋出一個未指定的執行時例外。 當逾時 ByteBuffer過了,則 I/O 操作的緩衝區序列狀態並未被定義。 緩衝區應被捨棄,或至少必須注意確保通道保持開啟時緩衝區不會被存取。 所有接受逾時參數的方法都會將值小於或等於零,表示 I/O 操作不會逾時。
在 1.7 版本中加入。
Java 文件 java.nio.channels.AsynchronousSocketChannel。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| AsynchronousSocketChannel(AsynchronousChannelProvider) |
初始化此類別的新實例。 |
| AsynchronousSocketChannel(IntPtr, JniHandleOwnership) |
一個非同步通道,用於流向連接套接字。 |
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| IsOpen |
一個非同步通道,用於流向連接套接字。 |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
一個非同步通道,用於流向連接套接字。 (繼承來源 JavaObject) |
| JniPeerMembers |
一個非同步通道,用於流向連接套接字。 |
| LocalAddress |
一個非同步通道,用於流向連接套接字。 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| RemoteAddress |
一個非同步通道,用於流向連接套接字。 |
| ThresholdClass |
一個非同步通道,用於流向連接套接字。 |
| ThresholdType |
一個非同步通道,用於流向連接套接字。 |
方法
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
一個非同步通道,用於流向連接套接字。 (繼承來源 JavaObject) |
| IJavaPeerable.Finalized() |
一個非同步通道,用於流向連接套接字。 (繼承來源 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
一個非同步通道,用於流向連接套接字。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
一個非同步通道,用於流向連接套接字。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
一個非同步通道,用於流向連接套接字。 (繼承來源 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
一個非同步通道,用於流向連接套接字。 (繼承來源 JavaObject) |
| IJavaPeerable.UnregisterFromRuntime() |
一個非同步通道,用於流向連接套接字。 |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
一個非同步通道,用於流向連接套接字。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |