Condividi tramite


DatagramChannel.Receive(ByteBuffer) Metodo

Definizione

Riceve un datagramma tramite questo canale.

[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

Parametri

dst
ByteBuffer

Buffer in cui deve essere trasferito il datagramma

Restituisce

L'indirizzo di origine del datagramma o null se questo canale è in modalità non bloccaggio e non è stato immediatamente disponibile alcun datagramma

Attributi

Eccezioni

se il canale è già chiuso.

se il canale viene chiuso da un altro thread mentre questo metodo è in funzione.

se un altro thread interrompe il thread chiamante mentre l'operazione è in corso. Il thread chiamante avrà lo stato di interrupt impostato e il canale verrà chiuso.

si verifica un altro errore di I/O.

Commenti

Riceve un datagramma tramite questo canale.

Se un datagram è immediatamente disponibile o se questo canale è in modalità di blocco e ne diventa infine disponibile uno, il datagram viene copiato nel buffer di byte specificato e viene restituito il relativo indirizzo di origine. Se questo canale è in modalità non blocca e un datagramma non è immediatamente disponibile, questo metodo restituisce nullimmediatamente .

Il datagramma viene trasferito nel buffer di byte specificato a partire dalla posizione corrente, come se fosse un'operazione regolare ReadableByteChannel#read(java.nio.ByteBuffer) read . Se nel buffer rimangono meno byte rispetto a quelli necessari per contenere il datagramma, il resto del datagramma viene eliminato automaticamente.

Questo metodo esegue esattamente gli stessi controlli di sicurezza del java.net.DatagramSocket#receive receive metodo della java.net.DatagramSocket classe . Ovvero, se il socket non è connesso a un indirizzo remoto specifico e un gestore di sicurezza è stato installato, per ogni datagrammo ricevuto questo metodo verifica che l'indirizzo e il numero di porta dell'origine siano consentiti dal metodo del gestore della java.lang.SecurityManager#checkAccept checkAccept sicurezza. Il sovraccarico di questo controllo di sicurezza può essere evitato connettendo prima il socket tramite il #connect connect metodo .

Questo metodo può essere richiamato in qualsiasi momento. Se un altro thread ha già avviato un'operazione di lettura su questo canale, tuttavia, una chiamata di questo metodo verrà bloccata fino al completamento della prima operazione. Se il socket del canale non è associato, questo metodo causerà innanzitutto l'associazione del socket a un indirizzo assegnato automaticamente, come se richiamasse il #bind bind metodo con un parametro di null.

Documentazione java per java.nio.channels.DatagramChannel.receive(java.nio.ByteBuffer).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

Si applica a