通过此通道接收数据报。
如果数据报直接可用,并且此通道处于阻塞模式但最终会变得可用,则将数据报复制到给定的字节缓冲区中并返回数据报的源地址。如果此通道处于非阻塞模式并且没有直接可用的数据报,则此方法直接返回 null。
该数据报被传输到给定的字节缓冲区中,并从缓冲区的当前位置开始存储,如同正规的 read
操作一样。如果缓冲区中的剩余字节空间小于保存数据报所需的空间,则丢弃余下的数据报。
此方法执行的安全检查与 datagramsocket
类的 receive
方法执行的安全检查完全相同。也就是说,如果该套接字未连接到特定的远程地址,并且已安装了安全管理器,则对于接收到的每个数据报,此方法都会验证安全管理器的 checkaccept
方法是否允许使用该数据报的源地址和端口号。避免此项安全检查开销的方法是首先通过 connect
方法连接该套接字。
可在任意时间调用此方法。但是如果另一个线程已经在此通道上发起了一个读取操作,则在该操作完成前此方法的调用被阻塞。
- 参数:
dst
- 要向其中传输数据报的缓冲区
- 返回:
- 数据报的源地址,或者如果此通道处于非阻塞模式并且没有直接可用的数据报,则返回 null
- 抛出:
closedchannelexception
- 如果此通道已关闭
asynchronouscloseexception
- 如果正在进行读取操作时另一个线程关闭了此通道
closedbyinterruptexception
- 如果正在进行读取操作时另一个线程中断了当前线程,因此关闭了该通道并将当前线程设置为中断状态
securityexception
- 如果已安装安全管理器并且它不允许接受该数据报发送者所发送的数据报
ioexception
- 如果发生其他 i/o
iis7站长之家