語言

DatagramChannel.Send(ByteBuffer, SocketAddress) 方法

定義

透過這個通道傳送資料報。

[Android.Runtime.Register("send", "(Ljava/nio/ByteBuffer;Ljava/net/SocketAddress;)I", "GetSend_Ljava_nio_ByteBuffer_Ljava_net_SocketAddress_Handler")]
public abstract int Send(Java.Nio.ByteBuffer? src, Java.Net.SocketAddress? target);
[<Android.Runtime.Register("send", "(Ljava/nio/ByteBuffer;Ljava/net/SocketAddress;)I", "GetSend_Ljava_nio_ByteBuffer_Ljava_net_SocketAddress_Handler")>]
abstract member Send : Java.Nio.ByteBuffer * Java.Net.SocketAddress -> int

參數

src
ByteBuffer

包含待傳送資料報的緩衝區

target
SocketAddress

資料報要傳送的位址

傳回

傳送的位元組數,可能是此方法被呼叫時來源緩衝區中剩餘的位元組數,或若此通道非阻塞,若底層輸出緩衝區資料報空間不足,則可能為零

屬性

例外狀況

如果頻道已經關閉。

如果通道被其他執行緒關閉,且此方法運作中。

如果有其他執行緒在操作進行中中斷呼叫執行緒。 呼叫執行緒會設定中斷狀態,通道會被關閉。

還會發生其他 I/O 錯誤。

備註

透過這個通道傳送資料報。

若此通道處於非阻塞模式且底層輸出緩衝區有足夠空間,或該通道處於阻塞模式且有足夠空間,則該緩衝區剩餘的位元組會作為單一資料報傳送至指定目標位址。

資料報從位元組緩衝區以一般 WritableByteChannel#write(java.nio.ByteBuffer) write 操作方式傳輸。

此方法執行與類別方法java.net.DatagramSocket#send send相同的安全檢查java.net.DatagramSocket。 也就是說,如果套接字未連接到特定的遠端位址,且已安裝安全管理器,則對於每傳送一個資料報,此方法會驗證安全管理員 java.lang.SecurityManager#checkConnect checkConnect 的方法是否允許目標位址與埠號。 此安全檢查的開銷可透過先透過該 #connect connect 方法連接插座來避免。

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

Java 文件 java.nio.channels.DatagramChannel.send(java.nio.ByteBuffer, java.net.SocketAddress)。

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

適用於