Socket.ReceiveFrom Methode

Definition

Empfängt ein Datagramm und speichert den Endpunkt der Quelle.Receives a datagram and stores the source endpoint.

Überlädt

ReceiveFrom(Byte[], SocketFlags, EndPoint)

Empfängt mithilfe der angegebenen SocketFlags ein Datagramm im Datenpuffer und speichert den Endpunkt.Receives a datagram into the data buffer, using the specified SocketFlags, and stores the endpoint.

ReceiveFrom(Byte[], EndPoint)

Empfängt ein Datagramm im Datenpuffer und speichert den Endpunkt.Receives a datagram into the data buffer and stores the endpoint.

ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint)

Empfängt mithilfe der angegebenen SocketFlags die angegebene Anzahl von Bytes im Datenpuffer und speichert den Endpunkt.Receives the specified number of bytes into the data buffer, using the specified SocketFlags, and stores the endpoint.

ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)

Empfängt die angegebene Anzahl von Datenbytes an der angegebenen Position im Datenpuffer, verwendet dabei die angegebenen SocketFlags und speichert den Endpunkt.Receives the specified number of bytes of data into the specified location of the data buffer, using the specified SocketFlags, and stores the endpoint.

ReceiveFrom(Byte[], SocketFlags, EndPoint)

Empfängt mithilfe der angegebenen SocketFlags ein Datagramm im Datenpuffer und speichert den Endpunkt.Receives a datagram into the data buffer, using the specified SocketFlags, and stores the endpoint.

public:
 int ReceiveFrom(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom (byte[] buffer, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * System.Net.Sockets.SocketFlags * EndPoint -> int

Parameter

buffer
Byte[]

Ein Array vom Typ Byte, das der Speicherort für die empfangenen Daten ist.An array of type Byte that is the storage location for the received data.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.A bitwise combination of the SocketFlags values.

remoteEP
EndPoint

Ein als Verweis übergebener EndPoint, der den Remoteserver darstellt.An EndPoint, passed by reference, that represents the remote server.

Gibt zurück

Die Anzahl der empfangenen Bytes.The number of bytes received.

Ausnahmen

buffer ist null.buffer is null.

- oder --or- remoteEP ist null.remoteEP is null.

Fehler beim Versuch, auf den Socket zuzugreifen.An error occurred when attempting to access the socket.

Der Socket wurde geschlossen.The Socket has been closed.

Ein Aufrufer in der Aufrufliste verfügt nicht über die erforderlichen Berechtigungen.A caller in the call stack does not have the required permissions.

Beispiele

Im folgenden Codebeispiel wird ein verbindungsloses Datagramm von einem Remote Host empfangen.The following code example receives a connectionless datagram from a remote host. SocketFlags werden an die ReceiveFrom-Methode übermittelt.SocketFlags are passed to the ReceiveFrom method.

static void ReceiveFrom2()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );
   
   // Creates an IpEndPoint to capture the identity of the sending host.
   IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
   EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
   
   // Binding is required with ReceiveFrom calls.
   s->Bind( endPoint );

   array<Byte>^ msg = gcnew array<Byte>(256);
   Console::WriteLine( "Waiting to receive datagrams from client..." );
   // This call blocks. 
   s->ReceiveFrom( msg, SocketFlags::None, senderRemote );
   s->Close();
}
public static void ReceiveFrom2()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);
    
    // Creates an IpEndPoint to capture the identity of the sending host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;
    
    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);
    
    byte[] msg = new Byte[256];
    Console.WriteLine ("Waiting to receive datagrams from client...");
    // This call blocks. 
    s.ReceiveFrom(msg, SocketFlags.None, ref senderRemote);
    s.Close();
}
Public Shared Sub ReceiveFrom2() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    ' Creates an IpEndPoint to capture the identity of the sending host.
    Dim sender As New IPEndPoint(IPAddress.Any, 0)
    Dim senderRemote As EndPoint = CType(sender, EndPoint)
    
    ' Binding is required with ReceiveFrom calls.
    s.Bind(endPoint)
    
    Dim msg() As Byte = New [Byte](255) {}
    Console.WriteLine("Waiting to receive datagrams from client...")
    ' This call blocks. 
    s.ReceiveFrom(msg, SocketFlags.None, senderRemote)
    s.Close()

End Sub

Hinweise

Die ReceiveFrom-Methode liest Daten in den buffer-Parameter, gibt die Anzahl der erfolgreich gelesenen Bytes zurück und erfasst den Remote Host Endpunkt, von dem die Daten gesendet wurden.The ReceiveFrom method reads data into the buffer parameter, returns the number of bytes successfully read, and captures the remote host endpoint from which the data was sent. Diese Methode ist nützlich, wenn Sie verbindungslose Datagramme von einem unbekannten Host oder mehreren Hosts empfangen möchten.This method is useful if you intend to receive connectionless datagrams from an unknown host or multiple hosts.

Diese Überladung erfordert nur, dass Sie einen Empfangs Puffer, die erforderliche SocketFlagsund eine EndPoint bereitstellen, die den Remote Host darstellt.This overload only requires you to provide a receive buffer, the necessary SocketFlags, and an EndPoint that represents the remote host. Der Offset ist standardmäßig 0, und die Größe ist standardmäßig auf die Länge des Puffer Parameters eingestellt.The offset defaults to 0 and the size defaults to the length of the buffer parameter.

Hinweis

Vor dem Aufrufen von ReceiveFrommüssen Sie die Socket mithilfe der Bind-Methode explizit an einen lokalen Endpunkt binden.Before calling ReceiveFrom, you must explicitly bind the Socket to a local endpoint using the Bind method. Wenn dies nicht der Fall ist, wird ReceiveFrom eine SocketExceptionauslösen.If you do not, ReceiveFrom will throw a SocketException.

Bei Verbindungs losen Protokollen liest ReceiveFrom das erste in die Warteschlange eingereihte Datagramm, das in den Puffer des lokalen Netzwerks empfangen wurde.With connectionless protocols, ReceiveFrom will read the first enqueued datagram received into the local network buffer. Wenn das Datagramm, das Sie empfangen, größer ist als die Größe der buffer, wird die ReceiveFrom Methode buffer mit dem größtmöglichen Wert der Nachricht aufgefüllt und eine SocketExceptionauslösen.If the datagram you receive is larger than the size of buffer, the ReceiveFrom method will fill buffer with as much of the message as is possible, and throw a SocketException. Wenn Sie ein unzuverlässiges Protokoll verwenden, gehen die Daten verloren.If you are using an unreliable protocol, the excess data will be lost. Wenn Sie ein zuverlässiges Protokoll verwenden, werden die überzähligen Daten vom Dienstanbieter aufbewahrt, und Sie können Sie abrufen, indem Sie die ReceiveFrom-Methode mit einem ausreichend großen Puffer aufrufen.If you are using a reliable protocol, the excess data will be retained by the service provider and you can retrieve it by calling the ReceiveFrom method with a large enough buffer.

Wenn keine Daten zum Lesen verfügbar sind, wird die ReceiveFrom-Methode blockiert, bis die Daten verfügbar sind.If no data is available for reading, the ReceiveFrom method will block until data is available. Wenn Sie sich im nicht blockierenden Modus befinden und im Protokollstapel Puffer keine Daten verfügbar sind, wird die ReceiveFrom-Methode sofort beendet und eine SocketExceptionausgelöst.If you are in non-blocking mode, and there is no data available in the in the protocol stack buffer, the ReceiveFrom method will complete immediately and throw a SocketException. Sie können die Available-Eigenschaft verwenden, um zu bestimmen, ob Daten zum Lesen verfügbar sind.You can use the Available property to determine if data is available for reading. Wenn Available ungleich NULL ist, wiederholen Sie den Empfangsvorgang.When Available is non-zero, retry the receive operation.

Obwohl ReceiveFrom für verbindungslose Protokolle vorgesehen ist, können Sie auch ein Verbindungs orientiertes Protokoll verwenden.Although ReceiveFrom is intended for connectionless protocols, you can use a connection-oriented protocol as well. Wenn Sie sich dafür entscheiden, müssen Sie zuerst eine Remote Host Verbindung herstellen, indem Sie die Connect-Methode aufrufen oder eine eingehende Remote Host Verbindung akzeptieren, indem Sie die Accept-Methode aufrufen.If you choose to do so, you must first either establish a remote host connection by calling the Connect method or accept an incoming remote host connection by calling the Accept method. Wenn Sie keine Verbindung einrichten oder akzeptieren, bevor Sie die ReceiveFrom-Methode aufrufen, erhalten Sie eine SocketException.If you do not establish or accept a connection before calling the ReceiveFrom method, you will get a SocketException. Sie können auch einen Standard-Remote Host für ein verbindungsloses Protokoll einrichten, bevor Sie die ReceiveFrom-Methode aufrufen.You can also establish a default remote host for a connectionless protocol prior to calling the ReceiveFrom method. In beiden Fällen ignoriert die ReceiveFrom Methode den remoteEP-Parameter und empfängt nur Daten vom verbundenen oder standardmäßigen Remote Host.In either of these cases, the ReceiveFrom method will ignore the remoteEP parameter and only receive data from the connected or default remote host.

Mit Verbindungs orientierten Sockets werden ReceiveFrom so viele Daten lesen, wie bis bufferverfügbar ist.With connection-oriented sockets, ReceiveFrom will read as much data as is available up to the size of buffer. Wenn der Remote Host die Socket Verbindung mit der Shutdown-Methode herunterfährt und alle verfügbaren Daten empfangen wurden, wird die ReceiveFrom-Methode sofort abgeschlossen und gibt NULL Bytes zurück.If the remote host shuts down the Socket connection with the Shutdown method, and all available data has been Received, the ReceiveFrom method will complete immediately and return zero bytes.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Nachdem Sie diesen Code abgerufen haben, finden Sie in der API-Fehlercode Dokumentation der Windows Sockets, Version 2 , eine ausführliche Beschreibung des Fehlers.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Hinweis

Die AddressFamily der in ReceiveFrom verwendeten EndPoint muss mit der AddressFamily der in EndPoint verwendeten SendToidentisch sein.The AddressFamily of the EndPoint used in ReceiveFrom needs to match the AddressFamily of the EndPoint used in SendTo.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren.This member outputs trace information when you enable network tracing in your application. Weitere Informationen finden Sie unter Netzwerk Ablauf Verfolgung in der .NET Framework.For more information, see Network Tracing in the .NET Framework.

Sicherheit

SocketPermission
zum Akzeptieren von Verbindungen aus dem Netzwerk.for accepting connections from the network. Zugeordnete Enumeration: AcceptAssociated enumeration: Accept.

Siehe auch

ReceiveFrom(Byte[], EndPoint)

Empfängt ein Datagramm im Datenpuffer und speichert den Endpunkt.Receives a datagram into the data buffer and stores the endpoint.

public:
 int ReceiveFrom(cli::array <System::Byte> ^ buffer, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom (byte[] buffer, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * EndPoint -> int
Public Function ReceiveFrom (buffer As Byte(), ByRef remoteEP As EndPoint) As Integer

Parameter

buffer
Byte[]

Ein Array des Typs Byte, bei dem es sich um den Speicherort für empfangene Daten handelt.An array of type Byte that is the storage location for received data.

remoteEP
EndPoint

Ein als Verweis übergebener EndPoint, der den Remoteserver darstellt.An EndPoint, passed by reference, that represents the remote server.

Gibt zurück

Die Anzahl der empfangenen Bytes.The number of bytes received.

Ausnahmen

buffer ist null.buffer is null.

- oder --or- remoteEP ist null.remoteEP is null.

Fehler beim Versuch, auf den Socket zuzugreifen.An error occurred when attempting to access the socket.

Der Socket wurde geschlossen.The Socket has been closed.

Ein Aufrufer in der Aufrufliste verfügt nicht über die erforderlichen Berechtigungen.A caller in the call stack does not have the required permissions.

Beispiele

Im folgenden Codebeispiel wird ein verbindungsloses Datagramm von einem Remote Host empfangen.The following code example receives a connectionless datagram from a remote host.

static void ReceiveFrom1()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );
   
   // Creates an IPEndPoint to capture the identity of the sending host.
   IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
   EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
   
   // Binding is required with ReceiveFrom calls.
   s->Bind( endPoint );

   array<Byte>^ msg = gcnew array<Byte>(256);
   Console::WriteLine( "Waiting to receive datagrams from client..." );
   
   // This call blocks. 
   s->ReceiveFrom( msg, senderRemote );
   s->Close();
}
public static void ReceiveFrom1()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);
  
    // Creates an IPEndPoint to capture the identity of the sending host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;
    
    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);
    
    byte[] msg = new Byte[256];
    Console.WriteLine ("Waiting to receive datagrams from client...");
    
    // This call blocks. 
    s.ReceiveFrom(msg, ref senderRemote);
    s.Close();
}
Public Shared Sub ReceiveFrom1() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    ' Creates an IPEndPoint to capture the identity of the sending host.
    Dim sender As New IPEndPoint(IPAddress.Any, 0)
    Dim senderRemote As EndPoint = CType(sender, EndPoint)
    
    ' Binding is required with ReceiveFrom calls.
    s.Bind(endPoint)
    
    Dim msg() As Byte = New [Byte](255) {}
    Console.WriteLine("Waiting to receive datagrams from client...")
    
    ' This call blocks. 
    s.ReceiveFrom(msg, senderRemote)
    s.Close()

End Sub

Hinweise

Die ReceiveFrom-Methode liest Daten in den buffer-Parameter, gibt die Anzahl der erfolgreich gelesenen Bytes zurück und erfasst den Remote Host Endpunkt, von dem die Daten gesendet wurden.The ReceiveFrom method reads data into the buffer parameter, returns the number of bytes successfully read, and captures the remote host endpoint from which the data was sent. Diese Methode ist nützlich, wenn Sie verbindungslose Datagramme von einem unbekannten Host oder mehreren Hosts empfangen möchten.This method is useful if you intend to receive connectionless datagrams from an unknown host or multiple hosts.

Diese Überladung erfordert nur, dass Sie einen Empfangs bufferund eine EndPoint bereitstellen, die den Remote Host darstellt.This overload only requires you to provide a receive buffer, and an EndPoint that represents the remote host. Der Puffer Offset ist standardmäßig 0.The buffer offset defaults to 0. Der Standardwert ist die Länge des buffer-Parameters, und der socketFlags Wert ist standardmäßig None.The size defaults to the length of the buffer parameter and the socketFlags value defaults to None.

Hinweis

Vor dem Aufrufen von ReceiveFrommüssen Sie die Socket mithilfe der Bind-Methode explizit an einen lokalen Endpunkt binden.Before calling ReceiveFrom, you must explicitly bind the Socket to a local endpoint using the Bind method. Wenn dies nicht der Fall ist, wird ReceiveFrom eine SocketExceptionauslösen.If you do not, ReceiveFrom will throw a SocketException.

Bei Verbindungs losen Protokollen liest ReceiveFrom das erste in die Warteschlange eingereihte Datagramm, das in den Puffer des lokalen Netzwerks empfangen wurde.With connectionless protocols, ReceiveFrom will read the first enqueued datagram received into the local network buffer. Wenn das Datagramm, das Sie empfangen, größer ist als die Größe der buffer, wird die ReceiveFrom Methode buffer mit dem größtmöglichen Wert der Nachricht aufgefüllt und eine SocketExceptionauslösen.If the datagram you receive is larger than the size of buffer, the ReceiveFrom method will fill buffer with as much of the message as is possible, and throw a SocketException. Wenn Sie ein unzuverlässiges Protokoll verwenden, gehen die Daten verloren.If you are using an unreliable protocol, the excess data will be lost. Wenn Sie ein zuverlässiges Protokoll verwenden, werden die überzähligen Daten vom Dienstanbieter aufbewahrt, und Sie können Sie abrufen, indem Sie die ReceiveFrom-Methode mit einem ausreichend großen Puffer aufrufen.If you are using a reliable protocol, the excess data will be retained by the service provider and you can retrieve it by calling the ReceiveFrom method with a large enough buffer.

Wenn keine Daten zum Lesen verfügbar sind, wird die ReceiveFrom-Methode blockiert, bis die Daten verfügbar sind.If no data is available for reading, the ReceiveFrom method will block until data is available. Wenn Sie sich im nicht blockierenden Modus befinden und im Protokollstapel Puffer keine Daten verfügbar sind, wird die ReceiveFrom-Methode sofort beendet und eine SocketExceptionausgelöst.If you are in non-blocking mode, and there is no data available in the in the protocol stack buffer, the ReceiveFrom method will complete immediately and throw a SocketException. Sie können die Available-Eigenschaft verwenden, um zu bestimmen, ob Daten zum Lesen verfügbar sind.You can use the Available property to determine if data is available for reading. Wenn Available ungleich NULL ist, wiederholen Sie den Empfangsvorgang.When Available is non-zero, retry the receive operation.

Obwohl ReceiveFrom für verbindungslose Protokolle vorgesehen ist, können Sie auch ein Verbindungs orientiertes Protokoll verwenden.Although ReceiveFrom is intended for connectionless protocols, you can use a connection-oriented protocol as well. Wenn Sie sich dafür entscheiden, müssen Sie zuerst eine Remote Host Verbindung herstellen, indem Sie die Connect-Methode aufrufen oder eine eingehende Remote Host Verbindung akzeptieren, indem Sie die Accept-Methode aufrufen.If you choose to do so, you must first either establish a remote host connection by calling the Connect method or accept an incoming remote host connection by calling the Accept method. Wenn Sie keine Verbindung einrichten oder akzeptieren, bevor Sie die ReceiveFrom-Methode aufrufen, erhalten Sie eine SocketException.If you do not establish or accept a connection before calling the ReceiveFrom method, you will get a SocketException. Sie können auch einen Standard-Remote Host für ein verbindungsloses Protokoll einrichten, bevor Sie die ReceiveFrom-Methode aufrufen.You can also establish a default remote host for a connectionless protocol prior to calling the ReceiveFrom method. In beiden Fällen ignoriert die ReceiveFrom Methode den remoteEP-Parameter und empfängt nur Daten vom verbundenen oder standardmäßigen Remote Host.In either of these cases, the ReceiveFrom method will ignore the remoteEP parameter and only receive data from the connected or default remote host.

Mit Verbindungs orientierten Sockets werden ReceiveFrom so viele Daten lesen, wie bis bufferverfügbar ist.With connection-oriented sockets, ReceiveFrom will read as much data as is available up to the size of buffer. Wenn der Remote Host die Socket Verbindung mit der Shutdown-Methode herunterfährt und alle verfügbaren Daten empfangen wurden, wird die ReceiveFrom-Methode sofort abgeschlossen und gibt NULL Bytes zurück.If the remote host shuts down the Socket connection with the Shutdown method, and all available data has been received, the ReceiveFrom method will complete immediately and return zero bytes.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Nachdem Sie diesen Code abgerufen haben, finden Sie in der API-Fehlercode Dokumentation der Windows Sockets, Version 2 , eine ausführliche Beschreibung des Fehlers.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Hinweis

Die AddressFamily der in ReceiveFrom verwendeten EndPoint muss mit der AddressFamily der in EndPoint verwendeten SendToidentisch sein.The AddressFamily of the EndPoint used in ReceiveFrom needs to match the AddressFamily of the EndPoint used in SendTo.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren.This member outputs trace information when you enable network tracing in your application. Weitere Informationen finden Sie unter Netzwerk Ablauf Verfolgung in der .NET Framework.For more information, see Network Tracing in the .NET Framework.

Sicherheit

SocketPermission
zum Akzeptieren von Verbindungen aus dem Netzwerk.for accepting connections from the network. Zugeordnete Enumeration: AcceptAssociated enumeration: Accept.

Siehe auch

ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint)

Empfängt mithilfe der angegebenen SocketFlags die angegebene Anzahl von Bytes im Datenpuffer und speichert den Endpunkt.Receives the specified number of bytes into the data buffer, using the specified SocketFlags, and stores the endpoint.

public:
 int ReceiveFrom(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom (byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * int * System.Net.Sockets.SocketFlags * EndPoint -> int

Parameter

buffer
Byte[]

Ein Array des Typs Byte, bei dem es sich um den Speicherort für empfangene Daten handelt.An array of type Byte that is the storage location for received data.

size
Int32

Die Anzahl der zu empfangenden Bytes.The number of bytes to receive.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.A bitwise combination of the SocketFlags values.

remoteEP
EndPoint

Ein als Verweis übergebener EndPoint, der den Remoteserver darstellt.An EndPoint, passed by reference, that represents the remote server.

Gibt zurück

Die Anzahl der empfangenen Bytes.The number of bytes received.

Ausnahmen

buffer ist null.buffer is null.

- oder --or- remoteEP ist null.remoteEP is null.

size ist kleiner als 0.size is less than 0.

- oder --or- size ist größer als die Länge von buffer.size is greater than the length of buffer.

socketFlags ist keine gültige Kombination von Werten.socketFlags is not a valid combination of values.

- oder --or- Die LocalEndPoint-Eigenschaft wurde nicht festgelegt.The LocalEndPoint property was not set.

- oder --or- Beim Zugriff auf den Socket tritt ein Betriebssystemfehler auf.An operating system error occurs while accessing the Socket.

Der Socket wurde geschlossen.The Socket has been closed.

Ein Aufrufer in der Aufrufliste verfügt nicht über die erforderlichen Berechtigungen.A caller in the call stack does not have the required permissions.

Beispiele

Im folgenden Codebeispiel wird ein verbindungsloses Datagramm von einem Remote Host empfangen.The following code example receives a connectionless datagram from a remote host. Die Puffergröße und SocketFlags werden an die ReceiveFrom-Methode übermittelt.The buffer size, and SocketFlags are passed to the ReceiveFrom method.

static void ReceiveFrom3()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );
   
   // Creates an IPEndPoint to capture the identity of the sending host.
   IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
   EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
   
   // Binding is required with ReceiveFrom calls.
   s->Bind( endPoint );

   array<Byte>^ msg = gcnew array<Byte>(256);
   Console::WriteLine(  "SWaiting to receive datagrams from client..." );
   // This call blocks. 
   s->ReceiveFrom( msg, msg->Length, SocketFlags::None, senderRemote );
   s->Close();
}
public static void ReceiveFrom3()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);
  
    // Creates an IPEndPoint to capture the identity of the sending host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;
    
    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);
    
    byte[] msg = new Byte[256];
    Console.WriteLine ("Waiting to receive datagrams from client...");
    // This call blocks. 
    s.ReceiveFrom(msg, msg.Length, SocketFlags.None, ref senderRemote);
    s.Close();
}
Public Shared Sub ReceiveFrom3() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    ' Creates an IPEndPoint to capture the identity of the sending host.
    Dim sender As New IPEndPoint(IPAddress.Any, 0)
    Dim senderRemote As EndPoint = CType(sender, EndPoint)
    
    ' Binding is required with ReceiveFrom calls.
    s.Bind(endPoint)
    
    Dim msg() As Byte = New [Byte](255) {}
    Console.WriteLine("Waiting to receive datagrams from client...")
    ' This call blocks. 
    s.ReceiveFrom(msg, msg.Length, SocketFlags.None, senderRemote)
    s.Close()

End Sub

Hinweise

Die ReceiveFrom-Methode liest Daten in den buffer-Parameter, gibt die Anzahl der erfolgreich gelesenen Bytes zurück und erfasst den Remote Host Endpunkt, von dem die Daten gesendet wurden.The ReceiveFrom method reads data into the buffer parameter, returns the number of bytes successfully read, and captures the remote host endpoint from which the data was sent. Diese Methode ist nützlich, wenn Sie verbindungslose Datagramme von einem unbekannten Host oder mehreren Hosts empfangen möchten.This method is useful if you intend to receive connectionless datagrams from an unknown host or multiple hosts.

Diese Überladung erfordert nur, dass Sie einen Empfangs Puffer, die Anzahl der zu empfangenden Bytes, die erforderliche SocketFlagsund eine EndPoint angeben, die den Remote Host darstellt.This overload only requires you to provide a receive buffer, the number of bytes you want to receive, the necessary SocketFlags, and an EndPoint that represents the remote host. Der Puffer Offset ist standardmäßig 0.The buffer offset defaults to 0.

Bei Verbindungs losen Protokollen liest ReceiveFrom das erste in die Warteschlange eingereihte Datagramm, das in den Puffer des lokalen Netzwerks empfangen wurde.With connectionless protocols, ReceiveFrom will read the first enqueued datagram received into the local network buffer. Wenn das Datagramm, das Sie empfangen, größer ist als die Größe der buffer, wird die ReceiveFrom Methode buffer mit dem größtmöglichen Wert der Nachricht aufgefüllt und eine SocketExceptionauslösen.If the datagram you receive is larger than the size of buffer, the ReceiveFrom method will fill buffer with as much of the message as is possible, and throw a SocketException. Wenn Sie ein unzuverlässiges Protokoll verwenden, gehen die Daten verloren.If you are using an unreliable protocol, the excess data will be lost. Wenn Sie ein zuverlässiges Protokoll verwenden, werden die überzähligen Daten vom Dienstanbieter aufbewahrt, und Sie können Sie abrufen, indem Sie die ReceiveFrom-Methode mit einem ausreichend großen Puffer aufrufen.If you are using a reliable protocol, the excess data will be retained by the service provider and you can retrieve it by calling the ReceiveFrom method with a large enough buffer.

Wenn keine Daten zum Lesen verfügbar sind, wird die ReceiveFrom-Methode blockiert, bis die Daten verfügbar sind.If no data is available for reading, the ReceiveFrom method will block until data is available. Wenn Sie sich im nicht blockierenden Modus befinden und im Protokollstapel Puffer keine Daten verfügbar sind, wird die ReceiveFrom-Methode sofort beendet und eine SocketExceptionausgelöst.If you are in non-blocking mode, and there is no data available in the in the protocol stack buffer, the ReceiveFrom method will complete immediately and throw a SocketException. Sie können die Available-Eigenschaft verwenden, um zu bestimmen, ob Daten zum Lesen verfügbar sind.You can use the Available property to determine if data is available for reading. Wenn Available ungleich NULL ist, wiederholen Sie den Empfangsvorgang.When Available is non-zero, retry the receive operation.

Obwohl ReceiveFrom für verbindungslose Protokolle vorgesehen ist, können Sie auch ein Verbindungs orientiertes Protokoll verwenden.Although ReceiveFrom is intended for connectionless protocols, you can use a connection-oriented protocol as well. Wenn Sie sich dafür entscheiden, müssen Sie zuerst eine Remote Host Verbindung herstellen, indem Sie die Connect-Methode aufrufen oder eine eingehende Remote Host Verbindung akzeptieren, indem Sie die Accept-Methode aufrufen.If you choose to do so, you must first either establish a remote host connection by calling the Connect method or accept an incoming remote host connection by calling the Accept method. Wenn Sie keine Verbindung einrichten oder akzeptieren, bevor Sie die ReceiveFrom-Methode aufrufen, erhalten Sie eine SocketException.If you do not establish or accept a connection before calling the ReceiveFrom method, you will get a SocketException. Sie können auch einen Standard-Remote Host für ein verbindungsloses Protokoll einrichten, bevor Sie die ReceiveFrom-Methode aufrufen.You can also establish a default remote host for a connectionless protocol prior to calling the ReceiveFrom method. In beiden Fällen ignoriert die ReceiveFrom Methode den remoteEP-Parameter und empfängt nur Daten vom verbundenen oder standardmäßigen Remote Host.In either of these cases, the ReceiveFrom method will ignore the remoteEP parameter and only receive data from the connected or default remote host.

Mit Verbindungs orientierten Sockets lesen ReceiveFrom so viele Daten, wie Sie bis zur Anzahl der Bytes verfügbar sind, die durch den Parameter size angegeben werden.With connection-oriented sockets, ReceiveFrom will read as much data as is available up to the number of bytes specified by the size parameter. Wenn der Remote Host die Socket Verbindung mit der Shutdown-Methode herunterfährt und alle verfügbaren Daten empfangen wurden, wird die ReceiveFrom-Methode sofort abgeschlossen und gibt NULL Bytes zurück.If the remote host shuts down the Socket connection with the Shutdown method, and all available data has been received, the ReceiveFrom method will complete immediately and return zero bytes.

Hinweis

Vor dem Aufrufen von ReceiveFrommüssen Sie die Socket mithilfe der Bind-Methode explizit an einen lokalen Endpunkt binden.Before calling ReceiveFrom, you must explicitly bind the Socket to a local endpoint using the Bind method. Wenn dies nicht der Fall ist, wird ReceiveFrom eine SocketExceptionauslösen.If you do not, ReceiveFrom will throw a SocketException. Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Nachdem Sie diesen Code abgerufen haben, finden Sie in der API-Fehlercode Dokumentation der Windows Sockets, Version 2 , eine ausführliche Beschreibung des Fehlers.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Hinweis

Die AddressFamily der in ReceiveFrom verwendeten EndPoint muss mit der AddressFamily der in EndPoint verwendeten SendToidentisch sein.The AddressFamily of the EndPoint used in ReceiveFrom needs to match the AddressFamily of the EndPoint used in SendTo.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren.This member outputs trace information when you enable network tracing in your application. Weitere Informationen finden Sie unter Netzwerk Ablauf Verfolgung in der .NET Framework.For more information, see Network Tracing in the .NET Framework.

Sicherheit

SocketPermission
zum Akzeptieren von Verbindungen aus dem Netzwerk.for accepting connections from the network. Zugeordnete Enumeration: AcceptAssociated enumeration: Accept.

Siehe auch

ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)

Empfängt die angegebene Anzahl von Datenbytes an der angegebenen Position im Datenpuffer, verwendet dabei die angegebenen SocketFlags und speichert den Endpunkt.Receives the specified number of bytes of data into the specified location of the data buffer, using the specified SocketFlags, and stores the endpoint.

public:
 int ReceiveFrom(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * int * int * System.Net.Sockets.SocketFlags * EndPoint -> int

Parameter

buffer
Byte[]

Ein Array des Typs Byte, bei dem es sich um den Speicherort für empfangene Daten handelt.An array of type Byte that is the storage location for received data.

offset
Int32

Die Position im buffer-Parameter, an der die empfangenen Daten gespeichert werden sollen.The position in the buffer parameter to store the received data.

size
Int32

Die Anzahl der zu empfangenden Bytes.The number of bytes to receive.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.A bitwise combination of the SocketFlags values.

remoteEP
EndPoint

Ein als Verweis übergebener EndPoint, der den Remoteserver darstellt.An EndPoint, passed by reference, that represents the remote server.

Gibt zurück

Die Anzahl der empfangenen Bytes.The number of bytes received.

Ausnahmen

buffer ist null.buffer is null.

- oder --or- remoteEP ist null.remoteEP is null.

offset ist kleiner als 0.offset is less than 0.

- oder --or- offset ist größer als die Länge von buffer.offset is greater than the length of buffer.

- oder --or- size ist kleiner als 0.size is less than 0.

- oder --or- size ist größer als die Länge von buffer minus dem Wert des offset-Parameters.size is greater than the length of the buffer minus the value of the offset parameter.

socketFlags ist keine gültige Kombination von Werten.socketFlags is not a valid combination of values.

- oder --or- Die LocalEndPoint-Eigenschaft wurde nicht festgelegt.The LocalEndPoint property was not set.

- oder --or- Fehler beim Versuch, auf den Socket zuzugreifen.An error occurred when attempting to access the socket.

Der Socket wurde geschlossen.The Socket has been closed.

Beispiele

Im folgenden Codebeispiel wird ein verbindungsloses Datagramm von einem Remote Host empfangen.The following code example receives a connectionless datagram from a remote host. Der Offset, die Puffergröße und SocketFlags werden an die ReceiveFrom-Methode übermittelt.The offset, buffer size, and SocketFlags are passed to the ReceiveFrom method.

static void ReceiveFrom4()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );
   
   // Creates an IpEndPoint to capture the identity of the sending host.
   IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
   EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
   
   // Binding is required with ReceiveFrom calls.
   s->Bind( endPoint );

   array<Byte>^ msg = gcnew array<Byte>(256);
   Console::WriteLine(  "SWaiting to receive datagrams from client..." );
   // This call blocks.  
   s->ReceiveFrom( msg, 0, msg->Length, SocketFlags::None, senderRemote );
   s->Close();
}
public static void ReceiveFrom4()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);
        
    // Creates an IpEndPoint to capture the identity of the sending host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;
    
    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);
    byte[] msg = new Byte[256];
    Console.WriteLine ("Waiting to receive datagrams from client...");
    // This call blocks.  
    s.ReceiveFrom(msg, 0, msg.Length, SocketFlags.None, ref senderRemote);
    s.Close();
}
Public Shared Sub ReceiveFrom4() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    ' Creates an IpEndPoint to capture the identity of the sending host.
    Dim sender As New IPEndPoint(IPAddress.Any, 0)
    Dim senderRemote As EndPoint = CType(sender, EndPoint)
    
    ' Binding is required with ReceiveFrom calls.
    s.Bind(endPoint)
    Dim msg() As Byte = New [Byte](255) {}
    Console.WriteLine("Waiting to receive datagrams from client...")
    ' This call blocks.  
    s.ReceiveFrom(msg, 0, msg.Length, SocketFlags.None, senderRemote)
    s.Close()

End Sub

Hinweise

Die ReceiveFrom-Methode liest Daten in den buffer-Parameter, gibt die Anzahl der erfolgreich gelesenen Bytes zurück und erfasst den Remote Host Endpunkt, von dem die Daten gesendet wurden.The ReceiveFrom method reads data into the buffer parameter, returns the number of bytes successfully read, and captures the remote host endpoint from which the data was sent. Diese Methode ist nützlich, wenn Sie verbindungslose Datagramme von einem unbekannten Host oder mehreren Hosts empfangen möchten.This method is useful if you intend to receive connectionless datagrams from an unknown host or multiple hosts.

Bei Verbindungs losen Protokollen liest ReceiveFrom das erste in die Warteschlange eingereihte Datagramm, das in den Puffer des lokalen Netzwerks empfangen wurde.With connectionless protocols, ReceiveFrom will read the first enqueued datagram received into the local network buffer. Wenn das Datagramm, das Sie empfangen, größer ist als die Größe der buffer, wird die ReceiveFrom Methode buffer mit dem größtmöglichen Wert der Nachricht aufgefüllt und eine SocketExceptionauslösen.If the datagram you receive is larger than the size of buffer, the ReceiveFrom method will fill buffer with as much of the message as is possible, and throw a SocketException. Wenn Sie ein unzuverlässiges Protokoll verwenden, gehen die Daten verloren.If you are using an unreliable protocol, the excess data will be lost. Wenn Sie ein zuverlässiges Protokoll verwenden, werden die überzähligen Daten vom Dienstanbieter aufbewahrt, und Sie können Sie abrufen, indem Sie die ReceiveFrom-Methode mit einem ausreichend großen Puffer aufrufen.If you are using a reliable protocol, the excess data will be retained by the service provider and you can retrieve it by calling the ReceiveFrom method with a large enough buffer.

Wenn keine Daten zum Lesen verfügbar sind, wird die ReceiveFrom-Methode blockiert, bis die Daten verfügbar sind.If no data is available for reading, the ReceiveFrom method will block until data is available. Wenn Sie sich im nicht blockierenden Modus befinden und im Protokollstapel Puffer keine Daten verfügbar sind, wird die ReceiveFrom-Methode sofort beendet und eine SocketExceptionausgelöst.If you are in non-blocking mode, and there is no data available in the in the protocol stack buffer, the ReceiveFrom method will complete immediately and throw a SocketException. Sie können die Available-Eigenschaft verwenden, um zu bestimmen, ob Daten zum Lesen verfügbar sind.You can use the Available property to determine if data is available for reading. Wenn Available ungleich NULL ist, wiederholen Sie den Empfangsvorgang.When Available is non-zero, retry the receive operation.

Obwohl ReceiveFrom für verbindungslose Protokolle vorgesehen ist, können Sie auch ein Verbindungs orientiertes Protokoll verwenden.Although ReceiveFrom is intended for connectionless protocols, you can use a connection-oriented protocol as well. Wenn Sie sich dafür entscheiden, müssen Sie zuerst eine Remote Host Verbindung herstellen, indem Sie die Connect-Methode aufrufen oder eine eingehende Remote Host Verbindung akzeptieren, indem Sie die Accept-Methode aufrufen.If you choose to do so, you must first either establish a remote host connection by calling the Connect method or accept an incoming remote host connection by calling the Accept method. Wenn Sie keine Verbindung einrichten oder akzeptieren, bevor Sie die ReceiveFrom-Methode aufrufen, erhalten Sie eine SocketException.If you do not establish or accept a connection before calling the ReceiveFrom method, you will get a SocketException. Sie können auch einen Standard-Remote Host für ein verbindungsloses Protokoll einrichten, bevor Sie die ReceiveFrom-Methode aufrufen.You can also establish a default remote host for a connectionless protocol prior to calling the ReceiveFrom method. In beiden Fällen ignoriert die ReceiveFrom Methode den remoteEP-Parameter und empfängt nur Daten vom verbundenen oder standardmäßigen Remote Host.In either of these cases, the ReceiveFrom method will ignore the remoteEP parameter and only receive data from the connected or default remote host.

Mit Verbindungs orientierten Sockets lesen ReceiveFrom so viele Daten wie verfügbar, die bis zu dem vom size-Parameter angegebenen Byte Umfang verfügbar sind.With connection-oriented sockets, ReceiveFrom will read as much data as is available up to the amount of bytes specified by the size parameter. Wenn der Remote Host die Socket Verbindung mit der Shutdown-Methode herunterfährt und alle verfügbaren Daten empfangen wurden, wird die ReceiveFrom-Methode sofort abgeschlossen und gibt NULL Bytes zurück.If the remote host shuts down the Socket connection with the Shutdown method, and all available data has been Received, the ReceiveFrom method will complete immediately and return zero bytes.

Hinweis

Vor dem Aufrufen von ReceiveFrommüssen Sie die Socket mithilfe der Bind-Methode explizit an einen lokalen Endpunkt binden.Before calling ReceiveFrom, you must explicitly bind the Socket to a local endpoint using the Bind method. Wenn dies nicht der Fall ist, wird ReceiveFrom eine SocketExceptionauslösen.If you do not, ReceiveFrom will throw a SocketException. Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Nachdem Sie diesen Code abgerufen haben, finden Sie in der API-Fehlercode Dokumentation der Windows Sockets, Version 2 , eine ausführliche Beschreibung des Fehlers.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Hinweis

Die AddressFamily der in ReceiveFrom verwendeten EndPoint muss mit der AddressFamily der in EndPoint verwendeten SendToidentisch sein.The AddressFamily of the EndPoint used in ReceiveFrom needs to match the AddressFamily of the EndPoint used in SendTo.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren.This member outputs trace information when you enable network tracing in your application. Weitere Informationen finden Sie unter Netzwerk Ablauf Verfolgung in der .NET Framework.For more information, see Network Tracing in the .NET Framework.

Sicherheit

SocketPermission
zum Akzeptieren von Verbindungen aus dem Netzwerk.for accepting connections from the network. Zugeordnete Enumeration: AcceptAssociated enumeration: Accept.

Siehe auch

Gilt für: