DatagramChannel.Receive(ByteBuffer) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
通过此通道接收数据报。
[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 属性许可证中所述的术语使用。