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 该方法连接套接字,可以避免此安全检查的开销。

可以随时调用此方法。 但是,如果另一个线程已在此通道上启动读取操作,则此方法的调用将阻止,直到第一个操作完成。 如果此通道的套接字未绑定,则此方法将首先导致套接字绑定到自动分配的地址,就像使用参数null调用#bind bind方法一样。

适用于 . 的 java.nio.channels.DatagramChannel.receive(java.nio.ByteBuffer)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于