Поделиться через


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 если этот канал находится в режиме неблокировки, и не было немедленно доступной диаграммы данных.

Атрибуты

Исключения

Значение , если канал уже закрыт.

Значение , если канал закрыт другим потоком во время работы этого метода.

Если другой поток прерывает вызывающий поток во время выполнения операции. Вызывающий поток будет иметь набор состояний прерывания, и канал будет закрыт.

возникает другая ошибка ввода-вывода.

Комментарии

Получает диаграмму данных через этот канал.

Если диаграмма данных немедленно доступна, или если этот канал находится в режиме блокировки, и один в конечном итоге становится доступным, то диаграмма данных копируется в заданный буфер байтов и возвращается его исходный адрес. Если этот канал находится в режиме без блокировки, а диаграмма данных недоступна немедленно, этот метод немедленно возвращается null.

Диаграмма данных передается в заданный буфер байтов, начиная с текущей позиции, как будто обычной ReadableByteChannel#read(java.nio.ByteBuffer) read операцией. Если в буфере осталось меньше байтов, чем требуется для хранения диаграммы данных, оставшаяся часть диаграммы данных автоматически удаляется.

Этот метод выполняет точно те же проверки безопасности, что java.net.DatagramSocket#receive receive и метод java.net.DatagramSocket класса. То есть, если сокет не подключен к определенному удаленному адресу и диспетчер безопасности был установлен, то для каждой полученной граммы данных проверяется, разрешен ли адрес источника и номер порта методом диспетчера java.lang.SecurityManager#checkAccept checkAccept безопасности. Затраты на эту проверку безопасности можно избежать, сначала подключив сокет с помощью #connect connect метода.

Этот метод может вызываться в любое время. Если другой поток уже инициировал операцию чтения по этому каналу, то вызов этого метода будет блокироваться до завершения первой операции. Если сокет этого канала не привязан, этот метод сначала приведет к автоматическому привязке сокета к адресу, назначенному автоматически, как при вызове #bind bind метода с параметром null.

Документация по Java для java.nio.channels.DatagramChannel.receive(java.nio.ByteBuffer).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Применяется к