Share via


SocketChannel 類別

定義

數據流導向連接套接字的可選取通道。

[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.SocketChannelJava 檔。

此頁面的部分是根據 原始碼專案所建立和共用的工作進行修改,並根據 中所述的詞彙使用。

建構函式

SocketChannel(IntPtr, JniHandleOwnership)

建立 JNI 物件的 Managed 表示法時所使用的建構函式;由運行時間呼叫。

SocketChannel(SelectorProvider)

初始化這個類別的新執行個體。

屬性

Class

傳回這個 Object的運行時間類別。

(繼承來源 Object)
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()

取得 用於和configureBlocking同步處理的 register 物件。

(繼承來源 AbstractSelectableChannel)
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)

數據流導向連接套接字的可選取通道。

適用於