語言

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#receive receive相同的安全檢查java.net.DatagramSocket。 也就是說,如果套接字未連接到特定的遠端位址,且已安裝安全管理員,則對於每個收到的資料報,此方法會驗證安全管理員 java.lang.SecurityManager#checkAccept checkAccept 的方法是否允許原始碼的位址與埠號。 此安全檢查的開銷可透過先透過該 #connect connect 方法連接插座來避免。

此方法可隨時啟動。 然而,如果已有其他執行緒對該通道發起讀取操作,則呼叫此方法會阻塞,直到第一個操作完成。 若該通道的套接字未被綁定,此方法將先使套接字綁定到自動指派的位址,就像以參數 #bind bind呼叫null方法一樣。

Java 文件 java.nio.channels.DatagramChannel.receive(java.nio.ByteBuffer)。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於