Freigeben über


Socket.ReceiveMessageFromAsync Methode

Definition

Überlädt

ReceiveMessageFromAsync(SocketAsyncEventArgs)

Beginnt unter Verwendung der angegebenen SocketFlags den asynchronen Empfang der angegebenen Anzahl von Datenbytes an der angegebenen Position im Datenpuffer und speichert die Endpunkt- und Paketinformationen.

ReceiveMessageFromAsync(ArraySegment<Byte>, EndPoint)

Empfängt Daten und gibt zusätzliche Informationen über den Absender der Nachricht zurück.

ReceiveMessageFromAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

Empfängt Daten und gibt zusätzliche Informationen über den Absender der Nachricht zurück.

ReceiveMessageFromAsync(Memory<Byte>, EndPoint, CancellationToken)

Empfängt Daten und gibt zusätzliche Informationen über den Absender der Nachricht zurück.

ReceiveMessageFromAsync(Memory<Byte>, SocketFlags, EndPoint, CancellationToken)

Empfängt Daten und gibt zusätzliche Informationen über den Absender der Nachricht zurück.

ReceiveMessageFromAsync(SocketAsyncEventArgs)

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Beginnt unter Verwendung der angegebenen SocketFlags den asynchronen Empfang der angegebenen Anzahl von Datenbytes an der angegebenen Position im Datenpuffer und speichert die Endpunkt- und Paketinformationen.

public:
 bool ReceiveMessageFromAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool ReceiveMessageFromAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.ReceiveMessageFromAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ReceiveMessageFromAsync (e As SocketAsyncEventArgs) As Boolean

Parameter

e
SocketAsyncEventArgs

Das SocketAsyncEventArgs-Objekt, das für diesen asynchronen Socketvorgang verwendet werden soll.

Gibt zurück

true, wenn der E/A-Vorgang aussteht. Das Completed-Ereignis für den e-Parameter wird nach dem Abschluss des Vorgangs ausgelöst.

false, wenn der E/A-Vorgang synchron abgeschlossen wurde. In diesem Fall wird das Completed-Ereignis für den e-Parameter nicht ausgelöst, und das als Parameter übergebene e-Objekt kann direkt nach der Rückgabe des Methodenaufrufs untersucht werden, um die Ergebnisse des Vorgangs abzurufen.

Ausnahmen

RemoteEndPoint darf nicht NULL sein.

Der Socket wurde geschlossen.

Fehler beim Versuch, auf den Socket zuzugreifen.

Hinweise

Die ReceiveMessageFromAsync -Methode wird hauptsächlich verwendet, um Nachrichtendaten auf einem verbindungslosen Socket zu empfangen. Die lokale Adresse des Sockets muss bekannt sein. Diese Methode kann nur mit Datagrammen und Rohsockets verwendet werden. Der Socket muss mit dem Sockettyp initialisiert werden, der auf Dgram oder Raw festgelegt ist, bevor diese Methode aufgerufen wird. Dies kann erfolgen, wenn der Socket mit Socketerstellt wird.

Der Aufrufer muss die SocketAsyncEventArgs.RemoteEndPoint -Eigenschaft auf einen EndPoint vom gleichen Typ wie der Endpunkt des Remotehosts festlegen. Die Eigenschaft wird beim erfolgreichen Empfang an den tatsächlichen Remoteendpunkt aktualisiert.

Die folgenden Eigenschaften und Ereignisse für das System.Net.Sockets.SocketAsyncEventArgs -Objekt sind erforderlich, um diese Methode erfolgreich aufzurufen:

Der Aufrufer kann die SocketAsyncEventArgs.UserToken -Eigenschaft auf ein beliebiges Benutzerzustandsobjekt festlegen, bevor die ReceiveMessageFromAsync -Methode aufgerufen wird, sodass die Informationen in der Rückrufmethode abgerufen werden können. Wenn der Rückruf mehr Informationen als ein einzelnes Objekt benötigt, kann eine kleine Klasse erstellt werden, die die anderen erforderlichen Zustandsinformationen als Member enthält.

Bei nachrichtenorientierten Sockets wird eine eingehende Nachricht bis zur Gesamtgröße des Puffers in den Puffer eingefügt. Die SocketAsyncEventArgs.Count Eigenschaften und SocketAsyncEventArgs.Offset bestimmen, wo sich die Daten im Puffer befinden, und die Datenmenge.

Die ReceiveMessageFromAsync -Methode legt die PacketInformation Socketoption automatisch auf true das erste Mal fest, wenn sie für eine bestimmte Socketaufgerufen wird. Das -Objekt ist jedoch nur für Pakete gültig, IPPacketInformation die auf dem lokalen Computer eingehen, nachdem die Socketoption festgelegt wurde. Wenn ein Socket Pakete zwischen dem Zeitpunkt gesendet wird, an den der Socket an einen lokalen Endpunkt gebunden ist (explizit durch die Bind -Methode oder implizit durch eine der ConnectMethoden , ConnectAsync, SendTooder SendToAsync ) und dem ersten Aufruf der -Methode, führen Aufrufe der ReceiveMessageFromAsync -Methode zu ReceiveMessageFromAsync ungültigen IPPacketInformation Objekten für diese Pakete.

Um sicherzustellen, dass alle IPPacketInformation Objekte gültig sind, sollte eine Anwendung die PacketInformation Socketoption auftrue festlegen, bevor sie mithilfe der SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) -Methode an einen lokalen Endpunkt gebunden wird.

Eine Anwendung kann die resultierenden IPPacketInformation Objekte untersuchen, wenn sie wissen muss, ob das Datagramm mit einer Unicast-, Multicast- oder Broadcastadresse gesendet wurde.

Weitere Informationen

Gilt für:

ReceiveMessageFromAsync(ArraySegment<Byte>, EndPoint)

Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs

Empfängt Daten und gibt zusätzliche Informationen über den Absender der Nachricht zurück.

public:
 System::Threading::Tasks::Task<System::Net::Sockets::SocketReceiveMessageFromResult> ^ ReceiveMessageFromAsync(ArraySegment<System::Byte> buffer, System::Net::EndPoint ^ remoteEndPoint);
public System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveMessageFromResult> ReceiveMessageFromAsync (ArraySegment<byte> buffer, System.Net.EndPoint remoteEndPoint);
member this.ReceiveMessageFromAsync : ArraySegment<byte> * System.Net.EndPoint -> System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveMessageFromResult>
Public Function ReceiveMessageFromAsync (buffer As ArraySegment(Of Byte), remoteEndPoint As EndPoint) As Task(Of SocketReceiveMessageFromResult)

Parameter

buffer
ArraySegment<Byte>

Der Puffer für die empfangenen Daten.

remoteEndPoint
EndPoint

Ein Endpunkt vom gleichen Typ wie der Endpunkt des Remotehosts.

Gibt zurück

Eine asynchrone Aufgabe, die mit einer SocketReceiveMessageFromResult abgeschlossen wird, die die Anzahl der empfangenen Bytes und zusätzliche Informationen über den sendenden Host enthält.

Ausnahmen

Das Socket-Objekt wurde geschlossen.

remoteEndPoint ist null.

Sie müssen die Bind-Methode aufrufen, bevor Sie diesen Vorgang ausführen.

Gilt für:

ReceiveMessageFromAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs

Empfängt Daten und gibt zusätzliche Informationen über den Absender der Nachricht zurück.

public:
 System::Threading::Tasks::Task<System::Net::Sockets::SocketReceiveMessageFromResult> ^ ReceiveMessageFromAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEndPoint);
public System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveMessageFromResult> ReceiveMessageFromAsync (ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEndPoint);
member this.ReceiveMessageFromAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveMessageFromResult>
Public Function ReceiveMessageFromAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags, remoteEndPoint As EndPoint) As Task(Of SocketReceiveMessageFromResult)

Parameter

buffer
ArraySegment<Byte>

Der Puffer für die empfangenen Daten.

socketFlags
SocketFlags

Eine bitweise Kombination von SocketFlags-Werten, die beim Empfangen der Daten verwendet wird.

remoteEndPoint
EndPoint

Ein Endpunkt vom gleichen Typ wie der Endpunkt des Remotehosts.

Gibt zurück

Eine asynchrone Aufgabe, die mit einer SocketReceiveMessageFromResult abgeschlossen wird, die die Anzahl der empfangenen Bytes und zusätzliche Informationen über den sendenden Host enthält.

Ausnahmen

Das Socket-Objekt wurde geschlossen.

remoteEndPoint ist null.

Sie müssen die Bind-Methode aufrufen, bevor Sie diesen Vorgang ausführen.

Gilt für:

ReceiveMessageFromAsync(Memory<Byte>, EndPoint, CancellationToken)

Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs

Empfängt Daten und gibt zusätzliche Informationen über den Absender der Nachricht zurück.

public System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveMessageFromResult> ReceiveMessageFromAsync (Memory<byte> buffer, System.Net.EndPoint remoteEndPoint, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveMessageFromAsync : Memory<byte> * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveMessageFromResult>
Public Function ReceiveMessageFromAsync (buffer As Memory(Of Byte), remoteEndPoint As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of SocketReceiveMessageFromResult)

Parameter

buffer
Memory<Byte>

Der Puffer für die empfangenen Daten.

remoteEndPoint
EndPoint

Ein Endpunkt vom gleichen Typ wie der Endpunkt des Remotehosts.

cancellationToken
CancellationToken

Ein Abbruchtoken, das verwendet werden kann, um zu signalisieren, dass der asynchrone Vorgang abgebrochen werden sollte.

Gibt zurück

Eine asynchrone Aufgabe, die mit einer SocketReceiveMessageFromResult abgeschlossen wird, die die Anzahl der empfangenen Bytes und zusätzliche Informationen über den sendenden Host enthält.

Ausnahmen

Das Socket-Objekt wurde geschlossen.

remoteEndPoint ist null.

Sie müssen die Bind-Methode aufrufen, bevor Sie diesen Vorgang ausführen.

Das Abbruchtoken wurde abgebrochen. Diese Ausnahme wird in der zurückgegebenen Aufgabe gespeichert.

Gilt für:

ReceiveMessageFromAsync(Memory<Byte>, SocketFlags, EndPoint, CancellationToken)

Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs

Empfängt Daten und gibt zusätzliche Informationen über den Absender der Nachricht zurück.

public System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveMessageFromResult> ReceiveMessageFromAsync (Memory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEndPoint, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveMessageFromAsync : Memory<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveMessageFromResult>
Public Function ReceiveMessageFromAsync (buffer As Memory(Of Byte), socketFlags As SocketFlags, remoteEndPoint As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of SocketReceiveMessageFromResult)

Parameter

buffer
Memory<Byte>

Der Puffer für die empfangenen Daten.

socketFlags
SocketFlags

Eine bitweise Kombination von SocketFlags-Werten, die beim Empfangen der Daten verwendet wird.

remoteEndPoint
EndPoint

Ein Endpunkt vom gleichen Typ wie der Endpunkt des Remotehosts.

cancellationToken
CancellationToken

Ein Abbruchtoken, das verwendet werden kann, um zu signalisieren, dass der asynchrone Vorgang abgebrochen werden sollte.

Gibt zurück

Eine asynchrone Aufgabe, die mit einer SocketReceiveMessageFromResult abgeschlossen wird, die die Anzahl der empfangenen Bytes und zusätzliche Informationen über den sendenden Host enthält.

Ausnahmen

Das Socket-Objekt wurde geschlossen.

remoteEndPoint ist null.

Sie müssen die Bind-Methode aufrufen, bevor Sie diesen Vorgang ausführen.

Das Abbruchtoken wurde abgebrochen. Diese Ausnahme wird in der zurückgegebenen Aufgabe gespeichert.

Gilt für: