Socket.Receive Methode

Definition

Empfängt Daten von einem gebundenen Socket.Receives data from a bound Socket.

Überlädt

Receive(Byte[], Int32, Int32, SocketFlags, SocketError)

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.Receives data from a bound Socket into a receive buffer, using the specified SocketFlags.

Receive(Byte[], Int32, Int32, SocketFlags)

Empfängt die angegebene Anzahl von Bytes aus einem gebundenen Socket an der angegebenen Offsetposition des Empfangspuffers, wobei die angegebenen SocketFlags verwendet werden.Receives the specified number of bytes from a bound Socket into the specified offset position of the receive buffer, using the specified SocketFlags.

Receive(Span<Byte>, SocketFlags, SocketError)

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.Receives data from a bound Socket into a receive buffer, using the specified SocketFlags.

Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

Empfängt Daten von einem gebundenen Socket in der Liste der Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.Receives data from a bound Socket into the list of receive buffers, using the specified SocketFlags.

Receive(Span<Byte>, SocketFlags)

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.Receives data from a bound Socket into a receive buffer, using the specified SocketFlags.

Receive(Byte[], Int32, SocketFlags)

Empfängt die angegebene Anzahl von Datenbytes aus einem gebundenen Socket in einem Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.Receives the specified number of bytes of data from a bound Socket into a receive buffer, using the specified SocketFlags.

Receive(Byte[], SocketFlags)

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.Receives data from a bound Socket into a receive buffer, using the specified SocketFlags.

Receive(Span<Byte>)

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer.Receives data from a bound Socket into a receive buffer.

Receive(IList<ArraySegment<Byte>>)

Empfängt Daten von einem gebundenen Socket und fügt sie in die Liste der Empfangspuffer ein.Receives data from a bound Socket into the list of receive buffers.

Receive(Byte[])

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer.Receives data from a bound Socket into a receive buffer.

Receive(IList<ArraySegment<Byte>>, SocketFlags)

Empfängt Daten von einem gebundenen Socket in der Liste der Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.Receives data from a bound Socket into the list of receive buffers, using the specified SocketFlags.

Receive(Byte[], Int32, Int32, SocketFlags, SocketError)

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.Receives data from a bound Socket into a receive buffer, using the specified SocketFlags.

public:
 int Receive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Receive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Receive : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError -> 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.

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.

errorCode
SocketError

Ein SocketError-Objekt, in dem der Socketfehler gespeichert wird.A SocketError object that stores the socket error.

Gibt zurück

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

Ausnahmen

buffer ist null.buffer 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 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 ist nicht festgelegt.The LocalEndPoint property is 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.

Hinweise

Die Receive-Methode liest Daten in den buffer-Parameter und gibt die Anzahl der erfolgreich gelesenen Bytes zurück.The Receive method reads data into the buffer parameter and returns the number of bytes successfully read. Sie können Receive sowohl aus Verbindungs orientierten als auch mit Verbindungs losen Sockets abrufen.You can call Receive from both connection-oriented and connectionless sockets.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder Connect aufrufen, um eine Remote Host Verbindung herzustellen, oder Accept, um eine eingehende Verbindung vor dem Aufrufen von Receivezu akzeptieren.If you are using a connection-oriented protocol, you must either call Connect to establish a remote host connection, or Accept to accept an incoming connection prior to calling Receive. Die Receive-Methode liest nur Daten, die vom Remote Host empfangen werden, der in der Connect-oder Accept-Methode eingerichtet wurde.The Receive method will only read data that arrives from the remote host established in the Connect or Accept method. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom-Methode verwenden.If you are using a connectionless protocol, you can also use the ReceiveFrom method. mit ReceiveFrom können Sie Daten empfangen, die von einem beliebigen Host empfangen werden.ReceiveFrom will allow you to receive data arriving from any host.

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive-Methode blockiert, bis Daten verfügbar sind, es sei denn, es wurde ein Timeout Wert mit Socket.ReceiveTimeoutfestgelegt.If no data is available for reading, the Receive method will block until data is available, unless a time-out value was set by using Socket.ReceiveTimeout. Wenn der Timeout Wert überschritten wurde, löst der Receive Aufruf eine SocketExceptionaus.If the time-out value was exceeded, the Receive call will throw a SocketException. Wenn Sie sich im nicht blockierenden Modus befinden und im Protokollstapel Puffer keine Daten verfügbar sind, wird die Receive-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 Receive method will complete immediately and throw a SocketException. Fehler beim Versuch, auf den Socket zuzugreifen.An error occurred when attempting to access the socket. Siehe folgende Hinweise.See Remarks below. 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.

Wenn Sie einen Verbindungs orientierten Socketverwenden, liest die Receive-Methode so viele Daten wie verfügbar, bis zu der Anzahl der Bytes, die durch den size-Parameter angegeben werden.If you are using a connection-oriented Socket, the Receive method 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 Receive-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 Receive method will complete immediately and return zero bytes.

Wenn Sie einen Verbindungs losen Socketverwenden, liest Receive das erste Datagramm in der Warteschlange von der Zieladresse, die Sie in der Connect-Methode angeben.If you are using a connectionless Socket, Receive will read the first queued datagram from the destination address you specify in the Connect method. Wenn das Datagramm, das Sie empfangen, größer als die Größe des buffer-Parameters ist, werden buffer mit dem ersten Teil der Nachricht aufgefüllt, die überzähligen Daten gehen verloren, und es wird ein SocketException ausgelöst.If the datagram you receive is larger than the size of the buffer parameter, buffer gets filled with the first part of the message, the excess data is lost and a SocketException is thrown.

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

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

Receive(Byte[], Int32, Int32, SocketFlags)

Empfängt die angegebene Anzahl von Bytes aus einem gebundenen Socket an der angegebenen Offsetposition des Empfangspuffers, wobei die angegebenen SocketFlags verwendet werden.Receives the specified number of bytes from a bound Socket into the specified offset position of the receive buffer, using the specified SocketFlags.

public:
 int Receive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : byte[] * int * int * System.Net.Sockets.SocketFlags -> 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, an der die empfangenen Daten gespeichert werden sollen.The location in buffer 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.

Gibt zurück

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

Ausnahmen

buffer ist null.buffer 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 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- 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 werden ein Datenpuffer, ein Offset, eine Größe und ein Socketflag angegeben, bevor Daten für eine verbundene Socketempfangen werden.The following code example specifies a data buffer, an offset, a size, and a socket flag before receiving data on a connected Socket.

// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
int SendReceiveTest4( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      
      // Blocks until send returns.
      int byteCount = server->Send( msg, 0, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, 0, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine(  "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try 
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);
        
        // Get reply from the server.
        byteCount = server.Receive(bytes, 0, server.Available, 
                                   SocketFlags.None);

        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
        
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest4

Hinweise

Die Receive-Methode liest Daten in den buffer-Parameter und gibt die Anzahl der erfolgreich gelesenen Bytes zurück.The Receive method reads data into the buffer parameter and returns the number of bytes successfully read. Sie können Receive sowohl aus Verbindungs orientierten als auch mit Verbindungs losen Sockets abrufen.You can call Receive from both connection-oriented and connectionless sockets.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder Connect aufrufen, um eine Remote Host Verbindung herzustellen, oder Accept, um eine eingehende Verbindung vor dem Aufrufen von Receivezu akzeptieren.If you are using a connection-oriented protocol, you must either call Connect to establish a remote host connection, or Accept to accept an incoming connection prior to calling Receive. Die Receive-Methode liest nur Daten, die vom Remote Host empfangen werden, der in der Connect-oder Accept-Methode eingerichtet wurde.The Receive method will only read data that arrives from the remote host established in the Connect or Accept method. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom-Methode verwenden.If you are using a connectionless protocol, you can also use the ReceiveFrom method. mit ReceiveFrom können Sie Daten empfangen, die von einem beliebigen Host empfangen werden.ReceiveFrom will allow you to receive data arriving from any host.

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive-Methode blockiert, bis Daten verfügbar sind, es sei denn, es wurde ein Timeout Wert mit Socket.ReceiveTimeoutfestgelegt.If no data is available for reading, the Receive method will block until data is available, unless a time-out value was set by using Socket.ReceiveTimeout. Wenn der Timeout Wert überschritten wurde, löst der Receive Aufruf eine SocketExceptionaus.If the time-out value was exceeded, the Receive call will throw a SocketException. Wenn Sie sich im nicht blockierenden Modus befinden und im Protokollstapel Puffer keine Daten verfügbar sind, wird die Receive-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 Receive method will complete immediately and throw a SocketException. Fehler beim Versuch, auf den Socket zuzugreifen.An error occurred when attempting to access the socket. Siehe folgende Hinweise.See Remarks below. 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.

Wenn Sie einen Verbindungs orientierten Socketverwenden, liest die Receive-Methode so viele Daten wie verfügbar, bis zu der Anzahl der Bytes, die durch den size-Parameter angegeben werden.If you are using a connection-oriented Socket, the Receive method 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 Receive-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 Receive method will complete immediately and return zero bytes.

Wenn Sie einen Verbindungs losen Socketverwenden, liest Receive das erste Datagramm in der Warteschlange von der Zieladresse, die Sie in der Connect-Methode angeben.If you are using a connectionless Socket, Receive will read the first queued datagram from the destination address you specify in the Connect method. Wenn das Datagramm, das Sie empfangen, größer als die Größe des buffer-Parameters ist, werden buffer mit dem ersten Teil der Nachricht aufgefüllt, die überzähligen Daten gehen verloren, und es wird ein SocketException ausgelöst.If the datagram you receive is larger than the size of the buffer parameter, buffer gets filled with the first part of the message, the excess data is lost and a SocketException is thrown.

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

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

Receive(Span<Byte>, SocketFlags, SocketError)

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.Receives data from a bound Socket into a receive buffer, using the specified SocketFlags.

public:
 int Receive(Span<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Receive (Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Receive : Span<byte> * System.Net.Sockets.SocketFlags * SocketError -> int

Parameter

buffer
Span<Byte>

Eine Spanne von Bytes, die der Speicherort für die empfangenen Daten ist.A span of bytes that is the storage location for the received data.

socketFlags
SocketFlags

Eine bitweise Kombination der Enumerationswerte, die das Sende- und Empfangsverhalten angeben.A bitwise combination of the enumeration values that specifies send and receive behaviors.

errorCode
SocketError

Diese Methode gibt einen der Enumerationswerte zurück, der Fehlercodes für den Socket definiert.When this method returns, contains one of the enumeration values that defines error codes for the socket.

Gibt zurück

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

Ausnahmen

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.

Hinweise

Die Receive-Methode liest Daten in den buffer-Parameter und gibt die Anzahl der erfolgreich gelesenen Bytes zurück.The Receive method reads data into the buffer parameter and returns the number of bytes successfully read. Sie können Receive sowohl aus Verbindungs orientierten als auch mit Verbindungs losen Sockets abrufen.You can call Receive from both connection-oriented and connectionless sockets.

Diese Überladung erfordert nur, dass Sie einen Empfangs Puffer bereitstellen.This overload only requires you to provide a receive buffer. Der Puffer Offset ist standardmäßig auf 0 (null) eingestellt, der Standardwert ist die Länge des Puffer Parameters, und der SocketFlags Wert ist standardmäßig None.The buffer offset defaults to 0, the size defaults to the length of the buffer parameter, and the SocketFlags value defaults to None.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder Connect aufrufen, um eine Remote Host Verbindung herzustellen, oder Accept, um eine eingehende Verbindung vor dem Aufrufen von Receivezu akzeptieren.If you're using a connection-oriented protocol, you must either call Connect to establish a remote host connection, or Accept to accept an incoming connection prior to calling Receive. Die Receive-Methode liest nur Daten, die vom Remote Host empfangen werden, der in der Connect-oder Accept-Methode eingerichtet wurde.The Receive method will only read data that arrives from the remote host established in the Connect or Accept method. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom-Methode verwenden.If you're using a connectionless protocol, you can also use the ReceiveFrom method. mit ReceiveFrom können Sie Daten empfangen, die von einem beliebigen Host empfangen werden.ReceiveFrom will allow you to receive data arriving from any host.

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive-Methode blockiert, bis Daten verfügbar sind, es sei denn, es wurde ein Timeout Wert mit Socket.ReceiveTimeoutfestgelegt.If no data is available for reading, the Receive method will block until data is available, unless a time-out value was set by using Socket.ReceiveTimeout. Wenn der Timeout Wert überschritten wird, löst der Receive Aufruf eine SocketExceptionaus.When the time-out value is exceeded, the Receive call will throw a SocketException. Wenn Sie sich im nicht blockierenden Modus befinden und im Protokollstapel Puffer keine Daten verfügbar sind, wird die Receive-Methode sofort beendet und eine SocketExceptionausgelöst.If you're in non-blocking mode, and there's no data available in the protocol stack buffer, the Receive 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.

Wenn Sie einen Verbindungs orientierten Socketverwenden, liest die Receive-Methode so viele Daten, wie Sie verfügbar sind, bis zur Größe des Puffers.If you're using a connection-oriented Socket, the Receive method will read as much data as is available, up to the size of the buffer. Wenn der Remote Host die Socket Verbindung mit der Shutdown-Methode herunterfährt und alle verfügbaren Daten empfangen wurden, wird die Receive-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 Receive method will complete immediately and return zero bytes.

Wenn Sie einen Verbindungs losen Socketverwenden, liest Receive das erste Datagramm in der Warteschlange von der Zieladresse, die Sie in der Connect-Methode angeben.If you're using a connectionless Socket, Receive will read the first queued datagram from the destination address you specify in the Connect method. Wenn das Datagramm, das Sie empfangen, größer als die Größe des buffer-Parameters ist, werden buffer mit dem ersten Teil der Nachricht aufgefüllt, die überzähligen Daten gehen verloren, und es wird ein SocketException ausgelöst.If the datagram you receive is larger than the size of the buffer parameter, buffer gets filled with the first part of the message, the excess data is lost and a SocketException is thrown.

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

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

Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

Wichtig

Diese API ist nicht CLS-kompatibel.

CLS-kompatible Alternative
System.Net.Sockets.Socket.Receive(Byte[], SocketFlags)

Empfängt Daten von einem gebundenen Socket in der Liste der Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.Receives data from a bound Socket into the list of receive buffers, using the specified SocketFlags.

public:
 int Receive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
[System.CLSCompliant(false)]
public int Receive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Receive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError -> int

Parameter

buffers
IList<ArraySegment<Byte>>

Eine Liste mit ArraySegment<T>s vom Typ Byte, die die empfangenen Daten enthält.A list of ArraySegment<T>s of type Byte that contains the received data.

socketFlags
SocketFlags

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

errorCode
SocketError

Ein SocketError-Objekt, in dem der Socketfehler gespeichert wird.A SocketError object that stores the socket error.

Gibt zurück

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

Attribute

Ausnahmen

buffers ist null.buffers is null.

- oder --or- buffers.Count ist 0 (null).buffers.Count is zero.

Beim Zugriff auf den Socket ist ein Fehler aufgetreten.An error occurred while attempting to access the socket.

Der Socket wurde geschlossen.The Socket has been closed.

Hinweise

Diese Methode liest Daten in den buffers-Parameter und gibt die Anzahl der erfolgreich gelesenen Bytes zurück.This method reads data into the buffers parameter and returns the number of bytes successfully read. Aus Verbindungs orientierten und Verbindungs losen Sockets kann aufgerufen werden.You can call from both connection-oriented and connectionless sockets.

Diese Überladung erfordert, dass Sie einen oder mehrere Empfangs Puffer bereitstellen.This overload requires you to provide one or more receive buffers. Der SocketFlags Wert ist standardmäßig None.The SocketFlags value defaults to None.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder Connect aufrufen, um eine Remote Host Verbindung herzustellen, oder Accept, um eine eingehende Verbindung vor dem Aufrufen von Receivezu akzeptieren.If you are using a connection-oriented protocol, you must either call Connect to establish a remote host connection, or Accept to accept an incoming connection prior to calling Receive. Die Receive-Methode liest nur Daten, die von der Remote Host Verbindung empfangen werden, die in der Connect-oder Accept-Methode eingerichtet wurde.The Receive method will only read data that arrives from the remote host connection established in the Connect or Accept method. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom-Methode verwenden.If you are using a connectionless protocol, you can also use the ReceiveFrom method. mit ReceiveFrom können Sie Daten empfangen, die von einem beliebigen Host empfangen werden.ReceiveFrom will allow you to receive data arriving from any host.

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive-Methode blockiert, bis Daten verfügbar sind, es sei denn, es wurde ein Timeout Wert mit Socket.ReceiveTimeoutfestgelegt.If no data is available for reading, the Receive method will block until data is available, unless a time-out value was set by using Socket.ReceiveTimeout. Wenn der Timeout Wert überschritten wurde, löst der Receive Aufruf eine SocketExceptionaus.If the time-out value was exceeded, the Receive call throws a SocketException. Wenn Sie sich im nicht blockierenden Modus befinden und im Protokollstapel Puffer keine Daten verfügbar sind, wird die Receive-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 Receive 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.

Wenn Sie einen Verbindungs orientierten Socketverwenden, liest die Receive-Methode so viele Daten, wie Sie verfügbar sind, bis zur Größe des Puffers.If you are using a connection-oriented Socket, the Receive method will read as much data as is available, up to the size of the buffer. Wenn der Remote Host die Socket Verbindung mit der Shutdown-Methode herunterfährt und alle verfügbaren Daten empfangen wurden, wird die Receive-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 Receive method will complete immediately and return zero bytes.

Wenn Sie einen Verbindungs losen Socketverwenden, liestReceive das erste Datagramm in der Warteschlange von der Zieladresse, die Sie in der Connect-Methode angeben.If you are using a connectionless Socket,Receive will read the first queued datagram from the destination address you specify in the Connect method. Wenn das Datagramm, das Sie empfangen, größer als die Größe des buffers-Parameters ist, werden buffers mit dem ersten Teil der Nachricht aufgefüllt, die überzähligen Daten gehen verloren, und es wird ein SocketException ausgelöst.If the datagram you receive is larger than the size of the buffers parameter, buffers gets filled with the first part of the message, the excess data is lost and a SocketException is thrown.

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

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

Receive(Span<Byte>, SocketFlags)

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.Receives data from a bound Socket into a receive buffer, using the specified SocketFlags.

public:
 int Receive(Span<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : Span<byte> * System.Net.Sockets.SocketFlags -> int

Parameter

buffer
Span<Byte>

Eine Spanne von Bytes, die der Speicherort für die empfangenen Daten ist.A span of bytes that is the storage location for the received data.

socketFlags
SocketFlags

Eine bitweise Kombination der Enumerationswerte, die das Sende- und Empfangsverhalten angeben.A bitwise combination of the enumeration values that specifies send and receive behaviors.

Gibt zurück

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

Ausnahmen

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.

Hinweise

Die Receive-Methode liest Daten in den buffer-Parameter und gibt die Anzahl der erfolgreich gelesenen Bytes zurück.The Receive method reads data into the buffer parameter and returns the number of bytes successfully read. Sie können Receive sowohl aus Verbindungs orientierten als auch mit Verbindungs losen Sockets abrufen.You can call Receive from both connection-oriented and connectionless sockets.

Diese Überladung erfordert nur, dass Sie einen Empfangs Puffer bereitstellen.This overload only requires you to provide a receive buffer. Der Puffer Offset ist standardmäßig auf 0 (null) eingestellt, der Standardwert ist die Länge des Puffer Parameters, und der SocketFlags Wert ist standardmäßig None.The buffer offset defaults to 0, the size defaults to the length of the buffer parameter, and the SocketFlags value defaults to None.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder Connect aufrufen, um eine Remote Host Verbindung herzustellen, oder Accept, um eine eingehende Verbindung vor dem Aufrufen von Receivezu akzeptieren.If you're using a connection-oriented protocol, you must either call Connect to establish a remote host connection, or Accept to accept an incoming connection prior to calling Receive. Die Receive-Methode liest nur Daten, die vom Remote Host empfangen werden, der in der Connect-oder Accept-Methode eingerichtet wurde.The Receive method will only read data that arrives from the remote host established in the Connect or Accept method. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom-Methode verwenden.If you're using a connectionless protocol, you can also use the ReceiveFrom method. mit ReceiveFrom können Sie Daten empfangen, die von einem beliebigen Host empfangen werden.ReceiveFrom will allow you to receive data arriving from any host.

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive-Methode blockiert, bis Daten verfügbar sind, es sei denn, es wurde ein Timeout Wert mit Socket.ReceiveTimeoutfestgelegt.If no data is available for reading, the Receive method will block until data is available, unless a time-out value was set by using Socket.ReceiveTimeout. Wenn der Timeout Wert überschritten wird, löst der Receive Aufruf eine SocketExceptionaus.When the time-out value is exceeded, the Receive call will throw a SocketException. Wenn Sie sich im nicht blockierenden Modus befinden und im Protokollstapel Puffer keine Daten verfügbar sind, wird die Receive-Methode sofort beendet und eine SocketExceptionausgelöst.If you're in non-blocking mode, and there is no data available in the protocol stack buffer, the Receive 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.

Wenn Sie einen Verbindungs orientierten Socketverwenden, liest die Receive-Methode so viele Daten, wie Sie verfügbar sind, bis zur Größe des Puffers.If you're using a connection-oriented Socket, the Receive method will read as much data as is available, up to the size of the buffer. Wenn der Remote Host die Socket Verbindung mit der Shutdown-Methode herunterfährt und alle verfügbaren Daten empfangen wurden, wird die Receive-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 Receive method will complete immediately and return zero bytes.

Wenn Sie einen Verbindungs losen Socketverwenden, liest Receive das erste Datagramm in der Warteschlange von der Zieladresse, die Sie in der Connect-Methode angeben.If you're using a connectionless Socket, Receive will read the first queued datagram from the destination address you specify in the Connect method. Wenn das Datagramm, das Sie empfangen, größer ist als die Größe des buffer-Parameters, wird buffer mit dem ersten Teil der Nachricht aufgefüllt, die überzähligen Daten gehen verloren, und es wird eine SocketException ausgelöst.If the datagram you receive is larger than the size of the buffer parameter, buffer gets filled with the first part of the message, the excess data is lost, and a SocketException is thrown.

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.

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

Receive(Byte[], Int32, SocketFlags)

Empfängt die angegebene Anzahl von Datenbytes aus einem gebundenen Socket in einem Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.Receives the specified number of bytes of data from a bound Socket into a receive buffer, using the specified SocketFlags.

public:
 int Receive(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : byte[] * int * System.Net.Sockets.SocketFlags -> 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.

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.

Gibt zurück

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

Ausnahmen

buffer ist null.buffer is null.

size ist größer als buffer.size exceeds the size of buffer.

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 werden die in buffergefundenen Daten empfangen und None für SocketFlagsangegeben.The following receives the data found into buffer, and specifies None for SocketFlags.

// Receive the host home page content and loop until all the data is received.
Int32 bytes = s->Receive( RecvBytes, RecvBytes->Length, SocketFlags::None );
strRetPage =  "Default HTML page on ";
strRetPage->Concat( server,  ":\r\n", ASCII->GetString( RecvBytes, 0, bytes ) );
while ( bytes > 0 )
{
   bytes = s->Receive( RecvBytes, RecvBytes->Length, SocketFlags::None );
   strRetPage->Concat( ASCII->GetString( RecvBytes, 0, bytes ) );
}



     // Receive the host home page content and loop until all the data is received.
     Int32 bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
     strRetPage = "Default HTML page on " + server + ":\r\n";
     strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);

     while (bytes > 0)
     {
       bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
       strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);
     }


' Receive the host home page content and loop until all the data is received.

'Dim bytes As Int32 = s.Receive(RecvBytes, RecvBytes.Length, 0)
Dim bytes As Int32 = s.Receive(RecvBytes, RecvBytes.Length, 0)

strRetPage = "Default HTML page on " + server + ":\r\n"
strRetPage = "Default HTML page on " + server + ":" + ControlChars.Lf + ControlChars.NewLine

Dim i As Integer

While bytes > 0

  bytes = s.Receive(RecvBytes, RecvBytes.Length, 0)

  strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes)

End While

Hinweise

Die Receive-Methode liest Daten in den buffer-Parameter und gibt die Anzahl der erfolgreich gelesenen Bytes zurück.The Receive method reads data into the buffer parameter and returns the number of bytes successfully read. Sie können Receive sowohl aus Verbindungs orientierten als auch mit Verbindungs losen Sockets abrufen.You can call Receive from both connection-oriented and connectionless sockets.

Diese Überladung erfordert nur, dass Sie einen Empfangs Puffer, die Anzahl der zu empfangenden Bytes und die erforderlichen SocketFlagsbereitstellen.This overload only requires you to provide a receive buffer, the number of bytes you want to receive, and the necessary SocketFlags.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder Connect aufrufen, um eine Remote Host Verbindung herzustellen, oder Accept, um eine eingehende Verbindung vor dem Aufrufen von Receivezu akzeptieren.If you are using a connection-oriented protocol, you must either call Connect to establish a remote host connection, or Accept to accept an incoming connection prior to calling Receive. Die Receive-Methode liest nur Daten, die vom Remote Host empfangen werden, der in der Connect-oder Accept-Methode eingerichtet wurde.The Receive method will only read data that arrives from the remote host established in the Connect or Accept method. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom-Methode verwenden.If you are using a connectionless protocol, you can also use the ReceiveFrom method. mit ReceiveFrom können Sie Daten empfangen, die von einem beliebigen Host empfangen werden.ReceiveFrom will allow you to receive data arriving from any host.

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive-Methode blockiert, bis Daten verfügbar sind, es sei denn, es wurde ein Timeout Wert mit Socket.ReceiveTimeoutfestgelegt.If no data is available for reading, the Receive method will block until data is available, unless a time-out value was set by using Socket.ReceiveTimeout. Wenn der Timeout Wert überschritten wurde, löst der Receive Aufruf eine SocketExceptionaus.If the time-out value was exceeded, the Receive call will throw a SocketException. Wenn Sie sich im nicht blockierenden Modus befinden und im Protokollstapel Puffer keine Daten verfügbar sind, wird die Receive-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 Receive 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 your receive operation.

Wenn Sie einen Verbindungs orientierten Socketverwenden, liest die Receive-Methode so viele Daten wie verfügbar, bis zu der Anzahl der Bytes, die durch den size-Parameter angegeben werden.If you are using a connection-oriented Socket, the Receive method 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 Receive-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 Receive method will complete immediately and return zero bytes.

Wenn Sie einen Verbindungs losen Socketverwenden, liest Receive das erste Datagramm in der Warteschlange von der Zieladresse, die Sie in der Connect-Methode angeben.If you are using a connectionless Socket, Receive will read the first queued datagram from the destination address you specify in the Connect method. Wenn das Datagramm, das Sie empfangen, größer als die Größe des buffer-Parameters ist, werden buffer mit dem ersten Teil der Nachricht aufgefüllt, die überzähligen Daten gehen verloren, und es wird ein SocketException ausgelöst.If the datagram you receive is larger than the size of the buffer parameter, buffer gets filled with the first part of the message, the excess data is lost and a SocketException is thrown.

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

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

Receive(Byte[], SocketFlags)

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.Receives data from a bound Socket into a receive buffer, using the specified SocketFlags.

public:
 int Receive(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (byte[] buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : byte[] * System.Net.Sockets.SocketFlags -> 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.

Gibt zurück

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

Ausnahmen

buffer ist null.buffer 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 Datenpuffer und SocketFlags zum Empfangen von Daten auf einem verbundenen Socketangegeben.The following code example specifies a data buffer, and SocketFlags for receiving data on a connected Socket.

// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
int SendReceiveTest2( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
public static int SendReceiveTest2(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try 
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);
        
        // Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None);
        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer and socket flags.
Public Shared Function SendReceiveTest2(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None)
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest2

Hinweise

Die Receive-Methode liest Daten in den buffer-Parameter und gibt die Anzahl der erfolgreich gelesenen Bytes zurück.The Receive method reads data into the buffer parameter and returns the number of bytes successfully read. Sie können Receive sowohl aus Verbindungs orientierten als auch mit Verbindungs losen Sockets abrufen.You can call Receive from both connection-oriented and connectionless sockets.

Diese Überladung erfordert nur, dass Sie einen Empfangs Puffer und die erforderlichen SocketFlagsbereitstellen.This overload only requires you to provide a receive buffer and the necessary SocketFlags. Der Puffer Offset ist standardmäßig 0, und die Größe ist standardmäßig auf die Länge des Byte-Parameters eingestellt.The buffer offset defaults to 0, and the size defaults to the length of the byte parameter.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder Connect aufrufen, um eine Remote Host Verbindung herzustellen, oder Accept, um eine eingehende Verbindung vor dem Aufrufen von Receivezu akzeptieren.If you are using a connection-oriented protocol, you must either call Connect to establish a remote host connection, or Accept to accept an incoming connection prior to calling Receive. Die Receive-Methode liest nur Daten, die vom Remote Host empfangen werden, der in der Connect-oder Accept-Methode eingerichtet wurde.The Receive method will only read data that arrives from the remote host established in the Connect or Accept method. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom-Methode verwenden.If you are using a connectionless protocol, you can also use the ReceiveFrom method. mit ReceiveFrom können Sie Daten empfangen, die von einem beliebigen Host empfangen werden.ReceiveFrom will allow you to receive data arriving from any host.

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive-Methode blockiert, bis die Daten verfügbar sind.If no data is available for reading, the Receive 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 Receive-Methode sofort beendet und eine SocketExceptionausgelöst.If you are in non-blocking mode, and there is no data available in the protocol stack buffer, the Receive 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 your receive operation.

Wenn Sie einen Verbindungs orientierten Socketverwenden, liest die Receive-Methode so viele Daten, wie bis zur Größe des Puffers verfügbar ist.If you are using a connection-oriented Socket, the Receive method will read as much data as is available up to the size of the buffer. Wenn der Remote Host die Socket Verbindung mit der Shutdown-Methode herunterfährt und alle verfügbaren Daten empfangen wurden, wird die Receive-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 Receive method will complete immediately and return zero bytes.

Wenn Sie einen Verbindungs losen Socketverwenden, liest Receive das erste Datagramm in der Warteschlange von der Zieladresse, die Sie in der Connect-Methode angeben.If you are using a connectionless Socket, Receive will read the first enqueued datagram from the destination address you specify in the Connect method. Wenn das Datagramm, das Sie empfangen, größer als die Größe des buffer-Parameters ist, werden buffer mit dem ersten Teil der Nachricht aufgefüllt, die überzähligen Daten gehen verloren, und es wird ein SocketException ausgelöst.If the datagram you receive is larger than the size of the buffer parameter, buffer gets filled with the first part of the message, the excess data is lost and a SocketException is thrown.

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

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
Verbindungen aus dem Netzwerk werden akzeptiert.Accepting connections from the network. Zugeordnete Enumeration: AcceptAssociated enumeration: Accept.

Siehe auch

Receive(Span<Byte>)

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer.Receives data from a bound Socket into a receive buffer.

public:
 int Receive(Span<System::Byte> buffer);
public int Receive (Span<byte> buffer);
member this.Receive : Span<byte> -> int
Public Function Receive (buffer As Span(Of Byte)) As Integer

Parameter

buffer
Span<Byte>

Eine Spanne von Bytes, die der Speicherort für die empfangenen Daten ist.A span of bytes that is the storage location for the received data.

Gibt zurück

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

Ausnahmen

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.

Hinweise

Die Receive-Methode liest Daten in den buffer-Parameter und gibt die Anzahl der erfolgreich gelesenen Bytes zurück.The Receive method reads data into the buffer parameter and returns the number of bytes successfully read. Sie können Receive sowohl aus Verbindungs orientierten als auch mit Verbindungs losen Sockets abrufen.You can call Receive from both connection-oriented and connectionless sockets.

Diese Überladung erfordert nur, dass Sie einen Empfangs Puffer bereitstellen.This overload only requires you to provide a receive buffer. Der Puffer Offset ist standardmäßig auf 0 (null) eingestellt, der Standardwert ist die Länge des Puffer Parameters, und der SocketFlags Wert ist standardmäßig None.The buffer offset defaults to 0, the size defaults to the length of the buffer parameter, and the SocketFlags value defaults to None.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder Connect aufrufen, um eine Remote Host Verbindung herzustellen, oder Accept, um eine eingehende Verbindung zu akzeptieren, bevor Sie Receiveaufrufen.If you're using a connection-oriented protocol, you must either call Connect to establish a remote host connection, or Accept to accept an incoming connection before calling Receive. Die Receive-Methode liest nur Daten, die vom Remote Host empfangen werden, der in der Connect-oder Accept-Methode eingerichtet wurde.The Receive method will only read data that arrives from the remote host established in the Connect or Accept method. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom-Methode verwenden.If you're using a connectionless protocol, you can also use the ReceiveFrom method. mit ReceiveFrom können Sie Daten empfangen, die von einem beliebigen Host empfangen werden.ReceiveFrom will allow you to receive data arriving from any host.

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive-Methode blockiert, bis Daten verfügbar sind, es sei denn, es wurde ein Timeout Wert mit Socket.ReceiveTimeoutfestgelegt.If no data is available for reading, the Receive method will block until data is available, unless a time-out value was set by using Socket.ReceiveTimeout. Wenn der Timeout Wert überschritten wird, löst der Receive Aufruf eine SocketExceptionaus.When the time-out value is exceeded, the Receive call will throw a SocketException. Wenn Sie sich im nicht blockierenden Modus befinden und im Protokollstapel Puffer keine Daten verfügbar sind, wird die Receive-Methode sofort beendet und eine SocketExceptionausgelöst.If you're in non-blocking mode, and there's no data available in the protocol stack buffer, the Receive 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.

Wenn Sie einen Verbindungs orientierten Socketverwenden, liest die Receive-Methode so viele Daten, wie Sie verfügbar sind, bis zur Größe des Puffers.If you're using a connection-oriented Socket, the Receive method will read as much data as is available, up to the size of the buffer. Wenn der Remote Host die Socket Verbindung mit der Shutdown-Methode herunterfährt und alle verfügbaren Daten empfangen wurden, wird die Receive-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 Receive method will complete immediately and return zero bytes.

Wenn Sie einen Verbindungs losen Socketverwenden, liest Receive das erste Datagramm in der Warteschlange von der Zieladresse, die Sie in der Connect-Methode angeben.If you're using a connectionless Socket, Receive will read the first queued datagram from the destination address you specify in the Connect method. Wenn das Datagramm, das Sie empfangen, größer ist als die Größe des buffer-Parameters, wird buffer mit dem ersten Teil der Nachricht aufgefüllt, die überzähligen Daten gehen verloren, und es wird eine SocketException ausgelöst.If the datagram you receive is larger than the size of the buffer parameter, buffer gets filled with the first part of the message, the excess data is lost, and a SocketException is thrown.

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.

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
Verbindungen aus dem Netzwerk werden akzeptiert.Accepting connections from the network. Zugeordnete Enumeration: AcceptAssociated enumeration: Accept.

Siehe auch

Receive(IList<ArraySegment<Byte>>)

Empfängt Daten von einem gebundenen Socket und fügt sie in die Liste der Empfangspuffer ein.Receives data from a bound Socket into the list of receive buffers.

public:
 int Receive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public int Receive (System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.Receive : System.Collections.Generic.IList<ArraySegment<byte>> -> int
Public Function Receive (buffers As IList(Of ArraySegment(Of Byte))) As Integer

Parameter

buffers
IList<ArraySegment<Byte>>

Eine Liste mit ArraySegment<T>s vom Typ Byte, die die empfangenen Daten enthält.A list of ArraySegment<T>s of type Byte that contains the received data.

Gibt zurück

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

Ausnahmen

Der buffer-Parameter ist null.The buffer parameter is null.

Beim Zugriff auf den Socket ist ein Fehler aufgetreten.An error occurred while attempting to access the socket.

Der Socket wurde geschlossen.The Socket has been closed.

Hinweise

Diese Methode liest Daten in den Puffer Parameter und gibt die Anzahl der erfolgreich gelesenen Bytes zurück.This method reads data into the buffers parameter and returns the number of bytes successfully read. Aus Verbindungs orientierten und Verbindungs losen Sockets kann aufgerufen werden.You can call from both connection-oriented and connectionless sockets.

Diese Überladung erfordert, dass Sie einen oder mehrere Empfangs Puffer bereitstellen.This overload requires you to provide one or more receive buffers.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder Connect aufrufen, um eine Remote Host Verbindung herzustellen, oder Accept, um eine eingehende Verbindung vor dem Aufrufen von Receivezu akzeptieren.If you are using a connection-oriented protocol, you must either call Connect to establish a remote host connection, or Accept to accept an incoming connection prior to calling Receive. Die Receive-Methode liest nur Daten, die von der Remote Host Verbindung empfangen werden, die in der Connect-oder Accept-Methode eingerichtet wurde.The Receive method will only read data that arrives from the remote host connection established in the Connect or Accept method. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom-Methode verwenden.If you are using a connectionless protocol, you can also use the ReceiveFrom method. mit ReceiveFrom können Sie Daten empfangen, die von einem beliebigen Host empfangen werden.ReceiveFrom will allow you to receive data arriving from any host.

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive-Methode blockiert, bis Daten verfügbar sind, es sei denn, es wurde ein Timeout Wert mit Socket.ReceiveTimeoutfestgelegt.If no data is available for reading, the Receive method will block until data is available, unless a time-out value was set by using Socket.ReceiveTimeout. Wenn der Timeout Wert überschritten wurde, löst der Receive Aufruf eine SocketExceptionaus.If the time-out value was exceeded, the Receive call will throw a SocketException. Wenn Sie sich im nicht blockierenden Modus befinden und im Protokollstapel Puffer keine Daten verfügbar sind, wird die Receive-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 Receive 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.

Wenn Sie einen Verbindungs orientierten Socketverwenden, liest die Receive-Methode so viele Daten, wie Sie verfügbar sind, bis zur Größe des Puffers.If you are using a connection-oriented Socket, the Receive method will read as much data as is available, up to the size of the buffer. Wenn der Remote Host die Socket Verbindung mit der Shutdown-Methode herunterfährt und alle verfügbaren Daten empfangen wurden, wird die Receive-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 Receive method will complete immediately and return zero bytes.

Wenn Sie einen Verbindungs losen Socketverwenden, liest Receive das erste Datagramm in der Warteschlange von der Zieladresse, die Sie in der Connect-Methode angeben.If you are using a connectionless Socket, Receive will read the first enqueued datagram from the destination address you specify in the Connect method. Wenn das Datagramm, das Sie empfangen, größer als die Größe des buffers-Parameters ist, werden buffers mit dem ersten Teil der Nachricht aufgefüllt, die überzähligen Daten gehen verloren, und es wird ein SocketException ausgelöst.If the datagram you receive is larger than the size of the buffers parameter, buffers gets filled with the first part of the message, the excess data is lost and a SocketException is thrown.

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 Dieser Member gibt Ablauf Verfolgungs Informationen aus, wenn Sie die Netzwerk Ablauf Verfolgung in der Anwendung aktivieren.Note 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.

Receive(Byte[])

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer.Receives data from a bound Socket into a receive buffer.

public:
 int Receive(cli::array <System::Byte> ^ buffer);
public int Receive (byte[] buffer);
member this.Receive : byte[] -> int
Public Function Receive (buffer As Byte()) As Integer

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.

Gibt zurück

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

Ausnahmen

buffer ist null.buffer 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 werden Daten in einem verbundenen Socketempfangen.The following code example receives data on a connected Socket.

// Displays sending with a connected socket
// using the overload that takes a buffer.
int SendReceiveTest1( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return ( e->ErrorCode );
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer.
public static int SendReceiveTest1(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try 
    {
        // Blocks until send returns.
        int i = server.Send(msg);
        Console.WriteLine("Sent {0} bytes.", i);
        
        // Get reply from the server.
        i = server.Receive(bytes);
        Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer.
Public Shared Function SendReceiveTest1(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim i As Integer = server.Send(msg)
        Console.WriteLine("Sent {0} bytes.", i)
        
        ' Get reply from the server.
        i = server.Receive(bytes)
        Console.WriteLine(Encoding.UTF8.GetString(bytes))
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest1

Hinweise

Die Receive-Methode liest Daten in den buffer-Parameter und gibt die Anzahl der erfolgreich gelesenen Bytes zurück.The Receive method reads data into the buffer parameter and returns the number of bytes successfully read. Sie können Receive sowohl aus Verbindungs orientierten als auch mit Verbindungs losen Sockets abrufen.You can call Receive from both connection-oriented and connectionless sockets.

Diese Überladung erfordert nur, dass Sie einen Empfangs Puffer bereitstellen.This overload only requires you to provide a receive buffer. Der Puffer Offset ist standardmäßig auf 0 (null) eingestellt, der Standardwert ist die Länge des Puffer Parameters, und der SocketFlags Wert ist standardmäßig None.The buffer offset defaults to 0, the size defaults to the length of the buffer parameter, and the SocketFlags value defaults to None.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder Connect aufrufen, um eine Remote Host Verbindung herzustellen, oder Accept, um eine eingehende Verbindung vor dem Aufrufen von Receivezu akzeptieren.If you are using a connection-oriented protocol, you must either call Connect to establish a remote host connection, or Accept to accept an incoming connection prior to calling Receive. Die Receive-Methode liest nur Daten, die vom Remote Host empfangen werden, der in der Connect-oder Accept-Methode eingerichtet wurde.The Receive method will only read data that arrives from the remote host established in the Connect or Accept method. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom-Methode verwenden.If you are using a connectionless protocol, you can also use the ReceiveFrom method. mit ReceiveFrom können Sie Daten empfangen, die von einem beliebigen Host empfangen werden.ReceiveFrom will allow you to receive data arriving from any host.

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive-Methode blockiert, bis Daten verfügbar sind, es sei denn, es wurde ein Timeout Wert mit Socket.ReceiveTimeoutfestgelegt.If no data is available for reading, the Receive method will block until data is available, unless a time-out value was set by using Socket.ReceiveTimeout. Wenn der Timeout Wert überschritten wurde, löst der Receive Aufruf eine SocketExceptionaus.If the time-out value was exceeded, the Receive call will throw a SocketException. Wenn Sie sich im nicht blockierenden Modus befinden und im Protokollstapel Puffer keine Daten verfügbar sind, wird die Receive-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 Receive 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.

Wenn Sie einen Verbindungs orientierten Socketverwenden, liest die Receive-Methode so viele Daten, wie Sie verfügbar sind, bis zur Größe des Puffers.If you are using a connection-oriented Socket, the Receive method will read as much data as is available, up to the size of the buffer. Wenn der Remote Host die Socket Verbindung mit der Shutdown-Methode herunterfährt und alle verfügbaren Daten empfangen wurden, wird die Receive-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 Receive method will complete immediately and return zero bytes.

Wenn Sie einen Verbindungs losen Socketverwenden, liest Receive das erste Datagramm in der Warteschlange von der Zieladresse, die Sie in der Connect-Methode angeben.If you are using a connectionless Socket, Receive will read the first queued datagram from the destination address you specify in the Connect method. Wenn das Datagramm, das Sie empfangen, größer als die Größe des buffer-Parameters ist, werden buffer mit dem ersten Teil der Nachricht aufgefüllt, die überzähligen Daten gehen verloren, und es wird ein SocketException ausgelöst.If the datagram you receive is larger than the size of the buffer parameter, buffer gets filled with the first part of the message, the excess data is lost and a SocketException is thrown.

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

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

Receive(IList<ArraySegment<Byte>>, SocketFlags)

Wichtig

Diese API ist nicht CLS-kompatibel.

CLS-kompatible Alternative
System.Net.Sockets.Socket.Receive(Byte[], SocketFlags)

Empfängt Daten von einem gebundenen Socket in der Liste der Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.Receives data from a bound Socket into the list of receive buffers, using the specified SocketFlags.

public:
 int Receive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
[System.CLSCompliant(false)]
public int Receive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> int

Parameter

buffers
IList<ArraySegment<Byte>>

Eine Liste mit ArraySegment<T>s vom Typ Byte, die die empfangenen Daten enthält.A list of ArraySegment<T>s of type Byte that contains the received data.

socketFlags
SocketFlags

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

Gibt zurück

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

Attribute

Ausnahmen

buffers ist null.buffers is null.

- oder --or- buffers.Count ist 0 (null).buffers.Count is zero.

Beim Zugriff auf den Socket ist ein Fehler aufgetreten.An error occurred while attempting to access the socket.

Der Socket wurde geschlossen.The Socket has been closed.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Daten für eine verbundene Socketempfangen werden.The following code example demonstrates how to receive data on a connected Socket.


// Build the buffers for the receive.
List<ArraySegment<Byte> >^ receiveBuffers = 
    gcnew List<ArraySegment<Byte> >(2);

array<Byte>^ bigBuffer = gcnew array<Byte>(1024);

// Specify the first buffer segment (2 bytes, starting 
// at the 4th element of bigBuffer)
receiveBuffers->Add(ArraySegment<Byte>(bigBuffer, 4, 2));

// Specify the second buffer segment (500 bytes, starting
// at the 20th element of bigBuffer)
receiveBuffers->Add(
    ArraySegment<Byte>(bigBuffer, 20, 500));

tcpSocket->Receive(receiveBuffers);

Console::WriteLine("{0}", 
    asciiEncoding->GetString(bigBuffer));

// Build the buffers for the receive.
List<ArraySegment<byte>> recvBuffers = 
                         new List<ArraySegment<byte>>(2);

byte[] bigBuffer = new byte[1024];

// Specify the first buffer segment (2 bytes, starting 
// at the 4th element of bigBuffer)
recvBuffers.Add(new ArraySegment<byte>
                        (bigBuffer, 4, 2));

// Specify the second buffer segment (500 bytes, starting
// at the 20th element of bigBuffer)
recvBuffers.Add(new ArraySegment<byte>
                        (bigBuffer, 20, 500));

int bytesReceived = mySocket.Receive(recvBuffers);

Console.WriteLine("{0}", ASCII.GetString(bigBuffer));

Hinweise

Diese Methode liest Daten in den buffers-Parameter und gibt die Anzahl der erfolgreich gelesenen Bytes zurück.This method reads data into the buffers parameter and returns the number of bytes successfully read. Aus Verbindungs orientierten und Verbindungs losen Sockets kann aufgerufen werden.You can call from both connection-oriented and connectionless sockets.

Diese Überladung erfordert, dass Sie einen oder mehrere Empfangs Puffer bereitstellen.This overload requires you to provide one or more receive buffers. Der SocketFlags Wert ist standardmäßig None.The SocketFlags value defaults to None.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder Connect aufrufen, um eine Remote Host Verbindung herzustellen, oder Accept, um eine eingehende Verbindung vor dem Aufrufen von Receivezu akzeptieren.If you are using a connection-oriented protocol, you must either call Connect to establish a remote host connection, or Accept to accept an incoming connection prior to calling Receive. Die Receive-Methode liest nur Daten, die von der Remote Host Verbindung empfangen werden, die in der Connect-oder Accept-Methode eingerichtet wurde.The Receive method will only read data that arrives from the remote host connection established in the Connect or Accept method. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom-Methode verwenden.If you are using a connectionless protocol, you can also use the ReceiveFrom method. mit ReceiveFrom können Sie Daten empfangen, die von einem beliebigen Host empfangen werden.ReceiveFrom will allow you to receive data arriving from any host.

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive-Methode blockiert, bis Daten verfügbar sind, es sei denn, es wurde ein Timeout Wert mit Socket.ReceiveTimeoutfestgelegt.If no data is available for reading, the Receive method will block until data is available, unless a time-out value was set by using Socket.ReceiveTimeout. Wenn der Timeout Wert überschritten wurde, löst der Receive Aufruf eine SocketExceptionaus.If the time-out value was exceeded, the Receive call throws a SocketException. Wenn Sie sich im nicht blockierenden Modus befinden und im Protokollstapel Puffer keine Daten verfügbar sind, wird die Receive-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 Receive 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.

Wenn Sie einen Verbindungs orientierten Socketverwenden, liest die Receive-Methode so viele Daten, wie Sie verfügbar sind, bis zur Größe des Puffers.If you are using a connection-oriented Socket, the Receive method will read as much data as is available, up to the size of the buffer. Wenn der Remote Host die Socket Verbindung mit der Shutdown-Methode herunterfährt und alle verfügbaren Daten empfangen wurden, wird die Receive-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 Receive method will complete immediately and return zero bytes.

Wenn Sie einen Verbindungs losen Socketverwenden, liest Receive das erste Datagramm in der Warteschlange von der Zieladresse, die Sie in der Connect-Methode angeben.If you are using a connectionless Socket, Receive will read the first enqueued datagram from the destination address you specify in the Connect method. Wenn das Datagramm, das Sie empfangen, größer als die Größe des buffers-Parameters ist, werden buffers mit dem ersten Teil der Nachricht aufgefüllt, die überzähligen Daten gehen verloren, und es wird ein SocketException ausgelöst.If the datagram you receive is larger than the size of the buffers parameter, buffers gets filled with the first part of the message, the excess data is lost and a SocketException is thrown.

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

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: