DatagramChannel.Receive(ByteBuffer) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
透過這個通道接收數據報。
[Android.Runtime.Register("receive", "(Ljava/nio/ByteBuffer;)Ljava/net/SocketAddress;", "GetReceive_Ljava_nio_ByteBuffer_Handler")]
public abstract Java.Net.SocketAddress? Receive (Java.Nio.ByteBuffer? dst);
[<Android.Runtime.Register("receive", "(Ljava/nio/ByteBuffer;)Ljava/net/SocketAddress;", "GetReceive_Ljava_nio_ByteBuffer_Handler")>]
abstract member Receive : Java.Nio.ByteBuffer -> Java.Net.SocketAddress
參數
- dst
- ByteBuffer
要傳送數據報的緩衝區
傳回
數據報的來源位址,或 null
此通道處於非封鎖模式且沒有立即可用的數據報
- 屬性
例外狀況
如果通道已經關閉,則為 。
如果通道在作業時由另一個線程關閉, 則為 。
如果另一個線程在作業進行時中斷呼叫線程,則為 。 呼叫線程會設定中斷狀態,且通道將會關閉。
發生一些其他 I/O 錯誤。
備註
透過這個通道接收數據報。
如果數據報立即可供使用,或這個通道處於封鎖模式,且最終會變成可用的數據報,則會將數據報復制到指定的位元組緩衝區,並傳回其來源位址。 如果這個通道處於非封鎖模式,而且資料報無法立即使用,則此方法會立即傳 null
回 。
數據報會從目前位置開始傳送至指定的位元組緩衝區,就像是一般作業一樣 ReadableByteChannel#read(java.nio.ByteBuffer) read
。 如果緩衝區中剩餘的位元組少於保存數據報所需的位元元組數,則會以無訊息方式捨棄其餘的數據報。
這個方法會執行與類別方法java.net.DatagramSocket
完全相同的安全性檢查java.net.DatagramSocket#receive receive
。 也就是說,如果套接字未連線到特定的遠端位址,且已安裝安全性管理員,則針對每個接收的數據報,驗證安全性管理員的方法是否允許來源的 java.lang.SecurityManager#checkAccept checkAccept
位址和埠號碼。 藉由先透過 #connect connect
方法連接套接字,即可避免此安全性檢查的額外負荷。
您可以隨時叫用這個方法。 不過,如果另一個線程已經在這個通道上起始讀取作業,則此方法的叫用將會封鎖,直到第一個作業完成為止。 如果這個通道的套接字未系結,則此方法會先導致套接字系結至自動指派的位址,就像 #bind bind
叫用 方法搭配 的 參數 null
一樣。
的 java.nio.channels.DatagramChannel.receive(java.nio.ByteBuffer)
Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。