SocketChannel 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
數據流導向連接套接字的可選取通道。
[Android.Runtime.Register("java/nio/channels/SocketChannel", DoNotGenerateAcw=true)]
public abstract class SocketChannel : Java.Nio.Channels.Spi.AbstractSelectableChannel, IDisposable, Java.Interop.IJavaPeerable, Java.Nio.Channels.IByteChannel, Java.Nio.Channels.IGatheringByteChannel, Java.Nio.Channels.IScatteringByteChannel
[<Android.Runtime.Register("java/nio/channels/SocketChannel", DoNotGenerateAcw=true)>]
type SocketChannel = class
inherit AbstractSelectableChannel
interface IByteChannel
interface IReadableByteChannel
interface IChannel
interface ICloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface IWritableByteChannel
interface IGatheringByteChannel
interface IScatteringByteChannel
- 繼承
- 屬性
- 實作
備註
數據流導向連接套接字的可選取通道。
套接字通道是藉由叫用這個類別的其中一個 #open open
方法所建立。 無法為任意且既有的套接字建立通道。 新建立的套接字通道已開啟,但尚未連線。 嘗試在未連線的通道上叫用 I/O 作業會導致 NotYetConnectedException
擲回 。 您可以叫用套接字 #connect connect
通道的方法進行連線;一旦連線,套接字通道就會保持連線,直到關閉為止。 是否連接套接字通道,都可以藉由叫用其 #isConnected isConnected
方法來決定。
套接字通道支援 非封鎖連線: 可以建立套接字通道,而且建立遠端套接字連結的程式可以透過 #connect connect
方法起始,以便稍後由 #finishConnect finishConnect
方法完成。 線上作業是否正在進行中,都可以藉由叫 #isConnectionPending isConnectionPending
用 方法來決定。
套接字通道支援 異步關機, 類似於 類別中指定的 Channel
異步關閉作業。 如果套接字的輸入端由一個線程關閉,而另一個線程在套接字通道的讀取作業中遭到封鎖,則封鎖線程中的讀取作業將會完成,而不會讀取任何位元組,而且會傳回 -1
。 如果套接字的輸出端由一個線程關閉,而另一個線程在套接字通道的寫入作業中遭到封鎖,則封鎖的線程將會收到 AsynchronousCloseException
。
套接字選項是使用 方法設定的 #setOption(SocketOption,Object) setOption
。 套接字通道支援下列選項:<blockquote><數據表類別=“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><><th scope=“row”>java.net.StandardSocketOptions#SO_LINGER SO_LINGER
</th td> Linger 如果數據在封鎖模式中設定時 (<) /td></tr><th scope=“row”><java.net.StandardSocketOptions#TCP_NODELAY TCP_NODELAY
/th><td> 停用 Nagle 演算法 </td></tr><<>/tbody></table></blockquote> 也可能支援特定實作特定) 選項的其他 (實作。<>
套接字通道可供多個並行線程使用。 它們支援並行讀取和寫入,但最多一個線程可能會讀取,而且最多一個線程可能會在任何指定時間寫入。 #connect connect
和 #finishConnect finishConnect
方法會彼此相互同步,而且嘗試在叫用其中一個方法時起始讀取或寫入作業將會封鎖,直到該叫用完成為止。
已在1.4中新增。
的 java.nio.channels.SocketChannel
Java 檔。
此頁面的部分是根據 原始碼專案所建立和共用的工作進行修改,並根據 中所述的詞彙使用。
建構函式
SocketChannel(IntPtr, JniHandleOwnership) |
建立 JNI 物件的 Managed 表示法時所使用的建構函式;由運行時間呼叫。 |
SocketChannel(SelectorProvider) |
初始化這個類別的新執行個體。 |
屬性
Class |
傳回這個 |
Handle |
基礎Android實例的句柄。 (繼承來源 Object) |
IsBlocking |
指出這個通道是否處於封鎖模式。 (繼承來源 AbstractSelectableChannel) |
IsConnected |
指出此通道的套接字是否已連接。 |
IsConnectionPending |
指出這個通道的套接字是否仍在嘗試連線。 |
IsOpen |
如果此通道已開啟,則傳回 true。 (繼承來源 AbstractInterruptibleChannel) |
IsRegistered |
指出此通道是否已向一或多個選取器註冊。 (繼承來源 AbstractSelectableChannel) |
JniIdentityHashCode |
數據流導向連接套接字的可選取通道。 (繼承來源 Object) |
JniPeerMembers |
數據流導向連接套接字的可選取通道。 |
LocalAddress |
數據流導向連接套接字的可選取通道。 |
PeerReference |
數據流導向連接套接字的可選取通道。 (繼承來源 Object) |
RemoteAddress |
數據流導向連接套接字的可選取通道。 |
ThresholdClass |
此 API 支援 Mono for Android 基礎結構,並不適合直接從您的程式代碼使用。 |
ThresholdType |
此 API 支援 Mono for Android 基礎結構,並不適合直接從您的程式代碼使用。 |
方法
Begin() |
標記可能會無限期封鎖的 I/O 作業開頭。 (繼承來源 AbstractInterruptibleChannel) |
Bind(SocketAddress) |
已在1中新增。 |
BlockingLock() |
取得 用於和 |
Clone() |
建立並傳回這個 對象的複本。 (繼承來源 Object) |
Close() |
關閉此通道。 (繼承來源 AbstractInterruptibleChannel) |
ConfigureBlocking(Boolean) |
調整此通道的封鎖模式。 (繼承來源 AbstractSelectableChannel) |
Connect(SocketAddress) |
連接此通道的套接字。 |
ConnectAsync(SocketAddress) |
數據流導向連接套接字的可選取通道。 |
Dispose() |
數據流導向連接套接字的可選取通道。 (繼承來源 Object) |
Dispose(Boolean) |
數據流導向連接套接字的可選取通道。 (繼承來源 Object) |
End(Boolean) |
標記可能會無限期封鎖的 I/O 作業結尾。 (繼承來源 AbstractInterruptibleChannel) |
Equals(Object) |
指出其他物件是否「等於」這個物件。 (繼承來源 Object) |
FinishConnect() |
完成連接套接字通道的程式。 |
FinishConnectAsync() |
數據流導向連接套接字的可選取通道。 |
GetHashCode() |
傳回此物件的雜湊碼值。 (繼承來源 Object) |
ImplCloseChannel() |
關閉此通道。 (繼承來源 AbstractSelectableChannel) |
ImplCloseSelectableChannel() |
關閉這個可選取的通道。 (繼承來源 AbstractSelectableChannel) |
ImplConfigureBlocking(Boolean) |
調整此通道的封鎖模式。 (繼承來源 AbstractSelectableChannel) |
JavaFinalize() |
當垃圾收集判斷對象沒有其他參考時,由物件上的垃圾收集行程呼叫。 (繼承來源 Object) |
KeyFor(Selector) |
取得指定選取器的這個通道選取索引鍵。 (繼承來源 AbstractSelectableChannel) |
Notify() |
喚醒正在等候此物件的監視器的單一線程。 (繼承來源 Object) |
NotifyAll() |
喚醒正在等候此物件監視器的所有線程。 (繼承來源 Object) |
Open() |
開啟套接字通道。 |
Open(SocketAddress) |
開啟套接字通道,並將它連線到遠端位址。 |
Provider() |
傳回建立此通道的提供者。 (繼承來源 AbstractSelectableChannel) |
Read(ByteBuffer) |
從這個套接字通道讀取位元組到指定的緩衝區。 |
Read(ByteBuffer[]) |
從這個套接字通道讀取位元組,並將其儲存在指定的緩衝區陣列中。 |
Read(ByteBuffer[], Int32, Int32) |
從這個套接字通道將位元組讀取到指定緩衝區的子集。 |
Register(Selector, Operations) |
向指定的選取器註冊此通道,並傳回選取索引鍵。 (繼承來源 SelectableChannel) |
Register(Selector, Operations, Object) |
向指定的選取器註冊此通道,並傳回選取索引鍵。 (繼承來源 AbstractSelectableChannel) |
SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
SetOption(ISocketOption, Object) |
已在1中新增。 |
ShutdownInput() |
關閉連線以進行讀取,而不關閉通道。 |
ShutdownOutput() |
關閉連線以進行寫入,而不關閉通道。 |
Socket() |
擷取與此通道相關聯的套接字。 |
ToArray<T>() |
數據流導向連接套接字的可選取通道。 (繼承來源 Object) |
ToString() |
傳回物件的字串表示。 (繼承來源 Object) |
UnregisterFromRuntime() |
數據流導向連接套接字的可選取通道。 (繼承來源 Object) |
ValidOps() |
傳回可識別此通道支援作業的作業集。 |
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[]) |
將位元組從所有指定的位元組緩衝區寫入這個套接字通道。 |
Write(ByteBuffer[], Int32, Int32) |
嘗試將指定位元組的子集從緩衝區寫入此套接字通道。 |
明確介面實作
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) |
數據流導向連接套接字的可選取通道。 |
WriteAsync(IGatheringByteChannel, ByteBuffer[]) |
數據流導向連接套接字的可選取通道。 |
WriteAsync(IGatheringByteChannel, ByteBuffer[], Int32, Int32) |
數據流導向連接套接字的可選取通道。 |
ReadAsync(IReadableByteChannel, ByteBuffer) |
數據流導向連接套接字的可選取通道。 |
ReadAsync(IScatteringByteChannel, ByteBuffer[]) |
數據流導向連接套接字的可選取通道。 |
ReadAsync(IScatteringByteChannel, ByteBuffer[], Int32, Int32) |
數據流導向連接套接字的可選取通道。 |
WriteAsync(IWritableByteChannel, ByteBuffer) |
數據流導向連接套接字的可選取通道。 |