共用方式為


DatagramChannel.Receive(ByteBuffer) 方法

定義

透過這個通道接收數據報。

[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 屬性授權中所述的詞彙使用。

適用於