Freigeben über


DatagramChannel.Receive(ByteBuffer) Methode

Definition

Empfängt ein Datagramm über diesen Kanal.

[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

Parameter

dst
ByteBuffer

Der Puffer, in den das Datagramm übertragen werden soll

Gibt zurück

Die Quelladresse des Datagramms oder null wenn sich dieser Kanal im nicht blockierenden Modus befindet und kein Datagramm sofort verfügbar war.

Attribute

Ausnahmen

wenn der Kanal bereits geschlossen ist.

wenn der Kanal von einem anderen Thread geschlossen wird, während diese Methode ausgeführt wird.

wenn ein anderer Thread den aufrufenden Thread unterbricht, während der Vorgang ausgeführt wird. Der aufrufende Thread hat den Unterbrechungszustand festgelegt, und der Kanal wird geschlossen.

ein anderer E/A-Fehler tritt auf.

Hinweise

Empfängt ein Datagramm über diesen Kanal.

Wenn ein Datagramm sofort verfügbar ist oder sich dieser Kanal im Blockierungsmodus befindet und eines schließlich verfügbar ist, wird das Datagramm in den angegebenen Bytepuffer kopiert und seine Quelladresse zurückgegeben. Wenn sich dieser Kanal im nicht blockierenden Modus befindet und ein Datagramm nicht sofort verfügbar ist, wird diese Methode sofort zurückgegeben null.

Das Datagramm wird in den angegebenen Bytepuffer übertragen, der an seiner aktuellen Position beginnt, als ob es sich um einen regulären ReadableByteChannel#read(java.nio.ByteBuffer) read Vorgang handelt. Wenn im Puffer weniger Bytes verbleiben, als zum Halten des Datagramms erforderlich sind, wird der Rest des Datagramms im Hintergrund verworfen.

Diese Methode führt genau die gleichen Sicherheitsüberprüfungen wie die java.net.DatagramSocket#receive receive Methode der java.net.DatagramSocket Klasse aus. Das heißt, wenn der Socket nicht mit einer bestimmten Remoteadresse verbunden ist und ein Sicherheits-Manager installiert wurde, überprüft diese Methode für jedes empfangene Datagramm, ob die Adresse und die Portnummer der Quelle durch die Methode des Sicherheits-Managers java.lang.SecurityManager#checkAccept checkAccept zulässig sind. Der Aufwand dieser Sicherheitsüberprüfung kann vermieden werden, indem zuerst der Socket über die #connect connect Methode verbunden wird.

Diese Methode kann jederzeit aufgerufen werden. Wenn bereits ein anderer Thread einen Lesevorgang für diesen Kanal initiiert hat, wird ein Aufruf dieser Methode jedoch blockiert, bis der erste Vorgang abgeschlossen ist. Wenn der Socket dieses Kanals nicht gebunden ist, bewirkt diese Methode zunächst, dass der Socket an eine automatisch zugewiesene Adresse gebunden wird, als ob die #bind bind Methode mit einem Parameter von null.

Java-Dokumentation für java.nio.channels.DatagramChannel.receive(java.nio.ByteBuffer).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für: