語言

AsynchronousSocketChannel 類別

定義

一個非同步通道,用於流向連接套接字。

[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
屬性
實作

備註

一個非同步通道,用於流向連接套接字。

非同步套接字通道有兩種方式之一。 新建立 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

回傳此 Object的執行時類別。

(繼承來源 Object)
Handle

底層 Android 實例的帳號。

(繼承來源 Object)
IsOpen

一個非同步通道,用於流向連接套接字。

JniIdentityHashCode

取得由互通執行時指派給此 Java 對等端的身份雜湊碼。

(繼承來源 Object)
JniManagedPeerState

一個非同步通道,用於流向連接套接字。

(繼承來源 JavaObject)
JniPeerMembers

一個非同步通道,用於流向連接套接字。

LocalAddress

一個非同步通道,用於流向連接套接字。

PeerReference

取得這個 Java 節點的 JNI 物件參考。

(繼承來源 Object)
RemoteAddress

一個非同步通道,用於流向連接套接字。

ThresholdClass

一個非同步通道,用於流向連接套接字。

ThresholdType

一個非同步通道,用於流向連接套接字。

方法

名稱 Description
Bind(SocketAddress)

一個非同步通道,用於流向連接套接字。

Clone()

建立並回傳此物件的副本。

(繼承來源 Object)
Close()

關閉這個頻道。

Connect(SocketAddress, Object, ICompletionHandler)

連接這個頻道。

Connect(SocketAddress)

連接這個頻道。

Construct(JniObjectReference, JniObjectReferenceOptions)

一個非同步通道,用於流向連接套接字。

(繼承來源 JavaObject)
Dispose()

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
Dispose(Boolean)

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
DisposeUnlessReferenced()

一個非同步通道,用於流向連接套接字。

(繼承來源 JavaObject)
Equals(Object)

一個非同步通道,用於流向連接套接字。

(繼承來源 JavaObject)
Equals(Object)

表示是否有其他物體「等同」於此物。

(繼承來源 Object)
GetHashCode()

回傳物件的雜湊碼值。

(繼承來源 Object)
JavaFinalize()

當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。

(繼承來源 Object)
Notify()

喚醒一個正在該物件監視器上等待的執行緒。

(繼承來源 Object)
NotifyAll()

喚醒所有等待該物件監視器的執行緒。

(繼承來源 Object)
Open()

開啟一個非同步套接字通道。

Open(AsynchronousChannelGroup)

開啟一個非同步套接字通道。

Provider()

回傳創建此通道的提供者。

Read(ByteBuffer, Int64, TimeUnit, Object, ICompletionHandler)

從此通道讀取一串位元組到給定的緩衝區。

Read(ByteBuffer, Object, ICompletionHandler)

一個非同步通道,用於流向連接套接字。

Read(ByteBuffer)

一個非同步通道,用於流向連接套接字。

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

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

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetOption(ISocketOption, Object)

一個非同步通道,用於流向連接套接字。

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

一個非同步通道,用於流向連接套接字。

(繼承來源 JavaObject)
ShutdownInput()

在不關閉頻道的情況下關閉連線以便讀取。

ShutdownOutput()

在不關閉通道的情況下關閉連線進行寫入。

ToArray<T>()

從這個 Java 陣列包裝器建立一個受管理陣列。

(繼承來源 Object)
ToString()

回傳物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

將此 Java 節點從互通執行時中取消註冊。

(繼承來源 Object)
Wait()

導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。

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

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)
Wait(Int64)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)
Write(ByteBuffer, Int64, TimeUnit, Object, ICompletionHandler)

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

Write(ByteBuffer, Object, ICompletionHandler)

一個非同步通道,用於流向連接套接字。

Write(ByteBuffer)

一個非同步通道,用於流向連接套接字。

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

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

明確介面實作

名稱 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)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

一個非同步通道,用於流向連接套接字。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於