Socket.ReceiveMessageFrom Methode

Definition

Empfängt die angegebene Anzahl von Bytes von Daten an den angegebenen Speicherort des Datenpuffers unter Verwendung des angegebenen SocketFlagsUnd speichert die Endpunkt- und Paketinformationen.

public:
 int ReceiveMessageFrom(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags % socketFlags, System::Net::EndPoint ^ % remoteEP, [Runtime::InteropServices::Out] System::Net::Sockets::IPPacketInformation % ipPacketInformation);
public int ReceiveMessageFrom(byte[] buffer, int offset, int size, ref System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, out System.Net.Sockets.IPPacketInformation ipPacketInformation);
member this.ReceiveMessageFrom : byte[] * int * int * SocketFlags * EndPoint * IPPacketInformation -> int
Public Function ReceiveMessageFrom (buffer As Byte(), offset As Integer, size As Integer, ByRef socketFlags As SocketFlags, ByRef remoteEP As EndPoint, ByRef ipPacketInformation As IPPacketInformation) As Integer

Parameter

buffer
Byte[]

Ein Array vom Typ Byte , bei dem es sich um den Speicherort für empfangene Daten handelt.

offset
Int32

Die Position im buffer Parameter zum Speichern der empfangenen Daten.

size
Int32

Die Anzahl der zu empfangenden Bytes.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags Werte.

remoteEP
EndPoint

Ein Verweis auf denselben EndPoint Typ wie der Endpunkt des Remotehosts, der beim erfolgreichen Empfang aktualisiert werden soll.

ipPacketInformation
IPPacketInformation

Eine IPPacketInformation Halteadresse und Schnittstelleninformationen.

Gibt zurück

Die Anzahl der empfangenen Bytes.

Ausnahmen

buffer ist null.

-oder-

remoteEP ist null.

offset ist kleiner als 0.

-oder-

offset ist größer als die Länge von buffer.

-oder-

size ist kleiner als 0.

-oder-

size ist größer als die Länge des buffer Minuswerts des Offsetparameters.

socketFlags ist keine gültige Kombination von Werten.

-oder-

Die LocalEndPoint Eigenschaft wurde nicht festgelegt.

-oder-

.NET Framework wird auf einem AMD 64-Bit-Prozessor ausgeführt.

-oder-

Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.

Das Socket wurde geschlossen.

Hinweise

Die ReceiveMessageFrom Methode liest Daten in den buffer Parameter, gibt die Anzahl der erfolgreich gelesenen Bytes zurück und erfasst den Remotehostendpunkt, von dem die Daten gesendet wurden, sowie Informationen zum empfangenen Paket.

Die ReceiveMessageFrom Methode wird hauptsächlich verwendet, um Nachrichtendaten in einem verbindungslosen Socket zu empfangen. Die lokale Adresse des Sockets muss bekannt sein. Diese Methode kann nur mit Datagrammen und rohen Sockets verwendet werden. Der Socket muss mit dem Sockettyp initialisiert werden, der auf Dgram oder Raw vor dem Aufrufen dieser Methode festgelegt ist. Dies kann erfolgen, wenn der Socket mithilfe Socketvon .

Bei nachrichtenorientierten Sockets wird eine eingehende Nachricht bis zur im Parameter angegebenen Gesamtgröße in den buffersize Parameter eingefügt. Der offset Parameter bestimmt, wo in den buffer Daten platziert wird. Die tatsächliche Datenmenge, die in die buffer Daten eingefügt wird, wird von der ReceiveMessageFrom Methode zurückgegeben.

Die ReceiveMessageFrom Methode legt die PacketInformation Socketoption automatisch auf true das erste Mal fest, wenn sie für einen bestimmten SocketAufruf aufgerufen wird. Das zurückgegebene IPPacketInformation Objekt ist jedoch nur für Pakete gültig, die auf dem lokalen Computer ankommen, nachdem die Socketoption festgelegt wurde. Wenn ein Socket pakete zwischen dem Zeitpunkt der Bindung an einen lokalen Endpunkt (explizit durch die Bind Methode oder implizit durch einen der ConnectMethoden , ConnectAsync, SendTooder SendToAsync methoden) und dem ersten Aufruf der ReceiveMessageFrom Methode gesendet wird, geben Aufrufe der ReceiveMessageFrom Methode ungültige IPPacketInformation Objekte für diese Pakete zurück.

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

Eine Anwendung kann den ipPacketInformation Parameter untersuchen, wenn er wissen muss, ob das Datagramm mit einer Unicast-, Multicast- oder Übertragungsadresse gesendet wurde.

Note

Die AddressFamily verwendeten EndPoint Ins ReceiveFrom müssen mit dem AddressFamily des EndPoint verwendeten Ins SendToübereinstimmen.

Note

Dieses Mitglied gibt Protokollierungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in Ihrer Anwendung aktivieren. Weitere Informationen finden Sie unter Network-Ablaufverfolgung in .NET Framework.

Gilt für:

Weitere Informationen