语言

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)

本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。

适用于