Socket.Receive Socket.Receive Socket.Receive Socket.Receive Method

Definición

Recibe datos de un objeto Socket enlazado.Receives data from a bound Socket.

Sobrecargas

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

Recibe datos de un Socket enlazado en un búfer de recepción, usando el valor de SocketFlags especificado.Receives data from a bound Socket into a receive buffer, using the specified SocketFlags.

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

Recibe el número especificado de bytes de un objeto Socket enlazado en la posición de desplazamiento especificada del búfer de recepción, usando el valor de SocketFlags especificado.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) Receive(Span<Byte>, SocketFlags, SocketError) Receive(Span<Byte>, SocketFlags, SocketError)
Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError) Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError) Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

Recibe, en la lista de búferes de recepción, datos de un Socket enlazado, utilizando el valor de SocketFlags especificado.Receives data from a bound Socket into the list of receive buffers, using the specified SocketFlags.

Receive(Span<Byte>, SocketFlags) Receive(Span<Byte>, SocketFlags) Receive(Span<Byte>, SocketFlags)
Receive(Byte[], Int32, SocketFlags) Receive(Byte[], Int32, SocketFlags) Receive(Byte[], Int32, SocketFlags)

Recibe el número especificado de bytes de datos de un objeto Socket enlazado en un búfer de recepción, usando el valor de SocketFlags especificado.Receives the specified number of bytes of data from a bound Socket into a receive buffer, using the specified SocketFlags.

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

Recibe datos de un Socket enlazado en un búfer de recepción, usando el valor de SocketFlags especificado.Receives data from a bound Socket into a receive buffer, using the specified SocketFlags.

Receive(Span<Byte>) Receive(Span<Byte>) Receive(Span<Byte>) Receive(Span<Byte>)
Receive(IList<ArraySegment<Byte>>) Receive(IList<ArraySegment<Byte>>) Receive(IList<ArraySegment<Byte>>) Receive(IList<ArraySegment<Byte>>)

Recibe, en la lista de búferes de recepción, datos de un Socket enlazado.Receives data from a bound Socket into the list of receive buffers.

Receive(Byte[]) Receive(Byte[]) Receive(Byte[]) Receive(Byte[])

Recibe datos de un Socket enlazado en un búfer de recepción.Receives data from a bound Socket into a receive buffer.

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

Recibe, en la lista de búferes de recepción, datos de un Socket enlazado, utilizando el valor de SocketFlags especificado.Receives data from a bound Socket into the list of receive buffers, using the specified SocketFlags.

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

Recibe datos de un Socket enlazado en un búfer de recepción, usando el valor de SocketFlags especificado.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

Parámetros

buffer
Byte[]

Matriz de tipo Byte que constituye la ubicación de almacenamiento de los datos recibidos.An array of type Byte that is the storage location for the received data.

offset
Int32 Int32 Int32 Int32

Posición en el parámetro buffer para almacenar los datos recibidos.The position in the buffer parameter to store the received data.

size
Int32 Int32 Int32 Int32

Número de bytes que se va a recibir.The number of bytes to receive.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

Combinación bit a bit de los valores de SocketFlags.A bitwise combination of the SocketFlags values.

errorCode
SocketError SocketError SocketError SocketError

Objeto SocketError que almacena el error de socket.A SocketError object that stores the socket error.

Devoluciones

Número de bytes recibidos.The number of bytes received.

Excepciones

offset es menor que 0.offset is less than 0.

o bien-or- offset es mayor que la longitud de buffer.offset is greater than the length of buffer.

O bien-or- size es menor que 0.size is less than 0.

O bien-or- size es mayor que la longitud de buffer menos el valor del parámetro offset.size is greater than the length of buffer minus the value of the offset parameter.

socketFlags no es una combinación válida de valores.socketFlags is not a valid combination of values.

o bien-or- La propiedad LocalEndPoint no se ha establecido.The LocalEndPoint property is not set.

O bien-or- Se produce un error de sistema operativo al acceder a Socket.An operating system error occurs while accessing the Socket.

Un llamador de la pila de llamadas no tiene los permisos necesarios.A caller in the call stack does not have the required permissions.

Comentarios

El Receive método lee los datos en el parámetro de búfer y devuelve el número de bytes leídos correctamente.The Receive method reads data into the buffer parameter and returns the number of bytes successfully read. Puede llamar Receive a desde Sockets orientados a conexiones y sin conexión.You can call Receive from both connection-oriented and connectionless sockets.

Si utiliza un protocolo orientado a la conexión, debe llamar Connect a para establecer una conexión de host remoto o Accept aceptar una conexión entrante antes de llamar Receivea.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. El Receive método solo leerá los datos que lleguen desde el host remoto establecido en Connect el Accept método o.The Receive method will only read data that arrives from the remote host established in the Connect or Accept method. Si utiliza un protocolo sin conexión, también puede utilizar el ReceiveFrom método.If you are using a connectionless protocol, you can also use the ReceiveFrom method. ReceiveFromle permitirá recibir datos que llegan de cualquier host.ReceiveFrom will allow you to receive data arriving from any host.

Si no hay datos disponibles para la lectura, Receive el método se bloqueará hasta que los datos estén disponibles, a menos que se haya establecido Socket.ReceiveTimeoutun valor de tiempo de espera mediante.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. Si se supera el valor de tiempo de espera, Receive la llamada producirá SocketExceptionuna excepción.If the time-out value was exceeded, the Receive call will throw a SocketException. Si está en modo de no bloqueo y no hay ningún dato disponible en el búfer de la pila de protocolos, el Receive método se completará inmediatamente y producirá una SocketExceptionexcepción.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. Error al intentar acceder al socket.An error occurred when attempting to access the socket. Vea la sección Comentarios a continuación.See Remarks below. Puede utilizar la propiedad Available para determinar si los datos están disponibles para su lectura.You can use the Available property to determine if data is available for reading. Cuando Available sea distinto de cero, vuelva a intentar la operación de recepción.When Available is non-zero, retry the receive operation.

Si está utilizando una orientada Socketa la conexión, el Receive método leerá tantos datos como estén disponibles, hasta el número de bytes especificado por el parámetro size.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. Si el host remoto cierra la Socket conexión con el Shutdown método y se han recibido todos los datos disponibles, el Receive método se completará inmediatamente y devolverá cero bytes.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.

Si está utilizando un sin conexión Socket, Receive leerá el primer datagrama en cola de la dirección de destino que especifique en el Connect método.If you are using a connectionless Socket, Receive will read the first queued datagram from the destination address you specify in the Connect method. Si el datagrama que recibe es mayor que el tamaño del buffer parámetro, buffer se rellena con la primera parte del mensaje, se pierden los datos sobrantes y se produce SocketException una excepción.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.

Nota

Si recibe un SocketException, utilice la SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en el .NET Framework.For more information, see Network Tracing in the .NET Framework.

Seguridad

SocketPermission
para aceptar conexiones de la red.for accepting connections from the network. Enumeración asociada: Accept.Associated enumeration: Accept.

Consulte también:

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

Recibe el número especificado de bytes de un objeto Socket enlazado en la posición de desplazamiento especificada del búfer de recepción, usando el valor de SocketFlags especificado.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

Parámetros

buffer
Byte[]

Matriz de tipo Byte que es la ubicación de almacenamiento para los datos recibidos.An array of type Byte that is the storage location for received data.

offset
Int32 Int32 Int32 Int32

Ubicación de buffer en la que se almacenarán los datos recibidos.The location in buffer to store the received data.

size
Int32 Int32 Int32 Int32

Número de bytes que se va a recibir.The number of bytes to receive.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

Combinación bit a bit de los valores de SocketFlags.A bitwise combination of the SocketFlags values.

Devoluciones

Número de bytes recibidos.The number of bytes received.

Excepciones

offset es menor que 0.offset is less than 0.

O bien-or- offset es mayor que la longitud de buffer.offset is greater than the length of buffer.

O bien-or- size es menor que 0.size is less than 0.

O bien-or- size es mayor que la longitud de buffer menos el valor del parámetro offset.size is greater than the length of buffer minus the value of the offset parameter.

socketFlags no es una combinación válida de valores.socketFlags is not a valid combination of values.

O bien-or- La propiedad LocalEndPoint no se estableció.The LocalEndPoint property was not set.

o bien-or- Se produce un error de sistema operativo al acceder a Socket.An operating system error occurs while accessing the Socket.

Un llamador de la pila de llamadas no tiene los permisos necesarios.A caller in the call stack does not have the required permissions.

Ejemplos

En el ejemplo de código siguiente se especifica un búfer de datos, un desplazamiento, un tamaño y una marca de socket antes de Socketrecibir datos en un conectado.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

Comentarios

El Receive método lee los datos en el parámetro de búfer y devuelve el número de bytes leídos correctamente.The Receive method reads data into the buffer parameter and returns the number of bytes successfully read. Puede llamar Receive a desde Sockets orientados a conexiones y sin conexión.You can call Receive from both connection-oriented and connectionless sockets.

Si utiliza un protocolo orientado a la conexión, debe llamar Connect a para establecer una conexión de host remoto o Accept aceptar una conexión entrante antes de llamar Receivea.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. El Receive método solo leerá los datos que lleguen desde el host remoto establecido en Connect el Accept método o.The Receive method will only read data that arrives from the remote host established in the Connect or Accept method. Si utiliza un protocolo sin conexión, también puede utilizar el ReceiveFrom método.If you are using a connectionless protocol, you can also use the ReceiveFrom method. ReceiveFromle permitirá recibir datos que llegan de cualquier host.ReceiveFrom will allow you to receive data arriving from any host.

Si no hay datos disponibles para la lectura, Receive el método se bloqueará hasta que los datos estén disponibles, a menos que se haya establecido Socket.ReceiveTimeoutun valor de tiempo de espera mediante.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. Si se supera el valor de tiempo de espera, Receive la llamada producirá SocketExceptionuna excepción.If the time-out value was exceeded, the Receive call will throw a SocketException. Si está en modo de no bloqueo y no hay ningún dato disponible en el búfer de la pila de protocolos, el Receive método se completará inmediatamente y producirá una SocketExceptionexcepción.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. Error al intentar acceder al socket.An error occurred when attempting to access the socket. Vea la sección Comentarios a continuación.See Remarks below. Puede utilizar la propiedad Available para determinar si los datos están disponibles para su lectura.You can use the Available property to determine if data is available for reading. Cuando Available sea distinto de cero, vuelva a intentar la operación de recepción.When Available is non-zero, retry the receive operation.

Si está utilizando una orientada Socketa la conexión, el Receive método leerá tantos datos como estén disponibles, hasta el número de bytes especificado por el parámetro size.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. Si el host remoto cierra la Socket conexión con el Shutdown método y se han recibido todos los datos disponibles, el Receive método se completará inmediatamente y devolverá cero bytes.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.

Si está utilizando un sin conexión Socket, Receive leerá el primer datagrama en cola de la dirección de destino que especifique en el Connect método.If you are using a connectionless Socket, Receive will read the first queued datagram from the destination address you specify in the Connect method. Si el datagrama que recibe es mayor que el tamaño del buffer parámetro, buffer se rellena con la primera parte del mensaje, se pierden los datos sobrantes y se produce SocketException una excepción.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.

Nota

Si recibe un SocketException, utilice la SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en el .NET Framework.For more information, see Network Tracing in the .NET Framework.

Seguridad

SocketPermission
para aceptar conexiones de la red.for accepting connections from the network. Enumeración asociada: Accept.Associated enumeration: Accept.

Consulte también:

Receive(Span<Byte>, SocketFlags, SocketError) Receive(Span<Byte>, SocketFlags, SocketError) Receive(Span<Byte>, SocketFlags, SocketError)

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

Parámetros

buffer
Span<Byte>

Devoluciones

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

Importante

Esta API no es conforme a CLS.

Alternativa conforme a CLS
System.Net.Sockets.Socket.Receive(Byte[], SocketFlags)

Recibe, en la lista de búferes de recepción, datos de un Socket enlazado, utilizando el valor de SocketFlags especificado.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

Parámetros

buffers
IList<ArraySegment<Byte>>

Lista de ArraySegment<T> de tipo Byte que contiene los datos recibidos.A list of ArraySegment<T>s of type Byte that contains the received data.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

Combinación bit a bit de los valores de SocketFlags.A bitwise combination of the SocketFlags values.

errorCode
SocketError SocketError SocketError SocketError

Objeto SocketError que almacena el error de socket.A SocketError object that stores the socket error.

Devoluciones

Número de bytes recibidos.The number of bytes received.

Excepciones

buffers es null.buffers is null.

O bien-or- buffers.Count es cero.buffers.Count is zero.

Se ha producido un error al intentar obtener acceso al socket.An error occurred while attempting to access the socket.

Comentarios

Este método lee los datos en buffers el parámetro y devuelve el número de bytes leídos correctamente.This method reads data into the buffers parameter and returns the number of bytes successfully read. Puede llamar a desde Sockets orientados a conexiones y sin conexión.You can call from both connection-oriented and connectionless sockets.

Esta sobrecarga requiere que se proporcionen uno o más búferes de recepción.This overload requires you to provide one or more receive buffers. El SocketFlags valor predeterminado es None.The SocketFlags value defaults to None.

Si utiliza un protocolo orientado a la conexión, debe llamar Connect a para establecer una conexión de host remoto o Accept aceptar una conexión entrante antes de llamar Receivea.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. El Receive método solo leerá los datos que lleguen de la conexión al host remoto establecida Connect en Accept el método o.The Receive method will only read data that arrives from the remote host connection established in the Connect or Accept method. Si utiliza un protocolo sin conexión, también puede utilizar el ReceiveFrom método.If you are using a connectionless protocol, you can also use the ReceiveFrom method. ReceiveFromle permitirá recibir datos que llegan de cualquier host.ReceiveFrom will allow you to receive data arriving from any host.

Si no hay datos disponibles para la lectura, Receive el método se bloqueará hasta que los datos estén disponibles, a menos que se haya establecido Socket.ReceiveTimeoutun valor de tiempo de espera mediante.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. Si se supera el valor de tiempo de espera, Receive la llamada produce una SocketExceptionexcepción.If the time-out value was exceeded, the Receive call throws a SocketException. Si está en modo de no bloqueo y no hay ningún dato disponible en el búfer de la pila de protocolos, el Receive método se completará inmediatamente y producirá una SocketExceptionexcepción.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. Puede utilizar la propiedad Available para determinar si los datos están disponibles para su lectura.You can use the Available property to determine if data is available for reading. Cuando Available sea distinto de cero, vuelva a intentar la operación de recepción.When Available is non-zero, retry the receive operation.

Si usa una orientada Socketa la conexión, el Receive método leerá tantos datos como estén disponibles, hasta el tamaño del búfer.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. Si el host remoto cierra la Socket conexión con el Shutdown método y se han recibido todos los datos disponibles, el Receive método se completará inmediatamente y devolverá cero bytes.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.

Si está utilizando un sin conexión Socket,Receive leerá el primer datagrama en cola de la dirección de destino que especifique en el Connect método.If you are using a connectionless Socket,Receive will read the first queued datagram from the destination address you specify in the Connect method. Si el datagrama que recibe es mayor que el tamaño del buffers parámetro, buffers se rellena con la primera parte del mensaje, se pierden los datos sobrantes y se produce SocketException una excepción.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.

Nota

Si recibe un SocketException, utilice la SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en el .NET Framework.For more information, see Network Tracing in the .NET Framework.

Seguridad

SocketPermission
para aceptar conexiones de la red.for accepting connections from the network. Enumeración asociada: Accept.Associated enumeration: Accept.

Consulte también:

Receive(Span<Byte>, SocketFlags) Receive(Span<Byte>, SocketFlags) Receive(Span<Byte>, 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

Parámetros

buffer
Span<Byte>

Devoluciones

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

Recibe el número especificado de bytes de datos de un objeto Socket enlazado en un búfer de recepción, usando el valor de SocketFlags especificado.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

Parámetros

buffer
Byte[]

Matriz de tipo Byte que constituye la ubicación de almacenamiento de los datos recibidos.An array of type Byte that is the storage location for the received data.

size
Int32 Int32 Int32 Int32

Número de bytes que se va a recibir.The number of bytes to receive.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

Combinación bit a bit de los valores de SocketFlags.A bitwise combination of the SocketFlags values.

Devoluciones

Número de bytes recibidos.The number of bytes received.

Excepciones

size sobrepasa el tamaño de buffer.size exceeds the size of buffer.

Error al intentar acceder al socket.An error occurred when attempting to access the socket.

Un llamador de la pila de llamadas no tiene los permisos necesarios.A caller in the call stack does not have the required permissions.

Ejemplos

A continuación se reciben los datos encontrados bufferen y se None especifica SocketFlagspara.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

Comentarios

El Receive método lee los datos en buffer el parámetro y devuelve el número de bytes leídos correctamente.The Receive method reads data into the buffer parameter and returns the number of bytes successfully read. Puede llamar Receive a desde Sockets orientados a conexiones y sin conexión.You can call Receive from both connection-oriented and connectionless sockets.

Esta sobrecarga solo requiere que proporcione un búfer de recepción, el número de bytes que desea recibir y el necesario SocketFlags.This overload only requires you to provide a receive buffer, the number of bytes you want to receive, and the necessary SocketFlags.

Si utiliza un protocolo orientado a la conexión, debe llamar Connect a para establecer una conexión de host remoto o Accept aceptar una conexión entrante antes de llamar Receivea.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. El Receive método solo leerá los datos que lleguen desde el host remoto establecido en Connect el Accept método o.The Receive method will only read data that arrives from the remote host established in the Connect or Accept method. Si utiliza un protocolo sin conexión, también puede utilizar el ReceiveFrom método.If you are using a connectionless protocol, you can also use the ReceiveFrom method. ReceiveFromle permitirá recibir datos que llegan de cualquier host.ReceiveFrom will allow you to receive data arriving from any host.

Si no hay datos disponibles para la lectura, Receive el método se bloqueará hasta que los datos estén disponibles, a menos que se haya establecido Socket.ReceiveTimeoutun valor de tiempo de espera mediante.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. Si se supera el valor de tiempo de espera, Receive la llamada producirá SocketExceptionuna excepción.If the time-out value was exceeded, the Receive call will throw a SocketException. Si está en modo de no bloqueo y no hay ningún dato disponible en el búfer de la pila de protocolos, el Receive método se completará inmediatamente y producirá una SocketExceptionexcepción.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. Puede utilizar la propiedad Available para determinar si los datos están disponibles para su lectura.You can use the Available property to determine if data is available for reading. Cuando Available sea distinto de cero, vuelva a intentar la operación de recepción.When Available is non-zero, retry your receive operation.

Si usa una orientada Socketa la conexión, el Receive método leerá tantos datos como estén disponibles, hasta el número de bytes especificado por el size parámetro.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. Si el host remoto cierra la Socket conexión con el Shutdown método y se han recibido todos los datos disponibles, el Receive método se completará inmediatamente y devolverá cero bytes.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.

Si está utilizando un sin conexión Socket, Receive leerá el primer datagrama en cola de la dirección de destino que especifique en el Connect método.If you are using a connectionless Socket, Receive will read the first queued datagram from the destination address you specify in the Connect method. Si el datagrama que recibe es mayor que el tamaño del buffer parámetro, buffer se rellena con la primera parte del mensaje, se pierden los datos sobrantes y se produce SocketException una excepción.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.

Nota

Si recibe un SocketException, utilice la SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en el .NET Framework.For more information, see Network Tracing in the .NET Framework.

Seguridad

SocketPermission
para aceptar conexiones de la red.for accepting connections from the network. Enumeración asociada: Accept.Associated enumeration: Accept.

Consulte también:

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

Recibe datos de un Socket enlazado en un búfer de recepción, usando el valor de SocketFlags especificado.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

Parámetros

buffer
Byte[]

Matriz de tipo Byte que constituye la ubicación de almacenamiento de los datos recibidos.An array of type Byte that is the storage location for the received data.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

Combinación bit a bit de los valores de SocketFlags.A bitwise combination of the SocketFlags values.

Devoluciones

Número de bytes recibidos.The number of bytes received.

Excepciones

Error al intentar acceder al socket.An error occurred when attempting to access the socket.

Un llamador de la pila de llamadas no tiene los permisos necesarios.A caller in the call stack does not have the required permissions.

Ejemplos

En el ejemplo de código siguiente se especifica un búfer SocketFlags de datos y para recibir datos Socketen un conectado.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

Comentarios

El Receive método lee los datos en el parámetro de búfer y devuelve el número de bytes leídos correctamente.The Receive method reads data into the buffer parameter and returns the number of bytes successfully read. Puede llamar Receive a desde Sockets orientados a conexiones y sin conexión.You can call Receive from both connection-oriented and connectionless sockets.

Esta sobrecarga solo requiere que proporcione un búfer de recepción y el necesario SocketFlags.This overload only requires you to provide a receive buffer and the necessary SocketFlags. El valor predeterminado del desplazamiento del búfer es 0 y el tamaño predeterminado es la longitud del parámetro de bytes.The buffer offset defaults to 0, and the size defaults to the length of the byte parameter.

Si utiliza un protocolo orientado a la conexión, debe llamar Connect a para establecer una conexión de host remoto o Accept aceptar una conexión entrante antes de llamar Receivea.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. El Receive método solo leerá los datos que lleguen desde el host remoto establecido en Connect el Accept método o.The Receive method will only read data that arrives from the remote host established in the Connect or Accept method. Si utiliza un protocolo sin conexión, también puede utilizar el ReceiveFrom método.If you are using a connectionless protocol, you can also use the ReceiveFrom method. ReceiveFromle permitirá recibir datos que llegan de cualquier host.ReceiveFrom will allow you to receive data arriving from any host.

Si no hay datos disponibles para la lectura, Receive el método se bloqueará hasta que los datos estén disponibles.If no data is available for reading, the Receive method will block until data is available. Si está en modo de no bloqueo y no hay ningún dato disponible en el búfer de la pila de protocolos, Receive el método se completará inmediatamente y SocketExceptionproducirá una excepción.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. Puede utilizar la propiedad Available para determinar si los datos están disponibles para su lectura.You can use the Available property to determine if data is available for reading. Cuando Available sea distinto de cero, vuelva a intentar la operación de recepción.When Available is non-zero, retry your receive operation.

Si usa una orientada Socketa la conexión, el Receive método leerá tantos datos como estén disponibles hasta el tamaño del búfer.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. Si el host remoto cierra la Socket conexión con el Shutdown método y se han recibido todos los datos disponibles, el Receive método se completará inmediatamente y devolverá cero bytes.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.

Si está utilizando un sin conexión Socket, Receive leerá el primer datagrama en cola de la dirección de destino que especifique en el Connect método.If you are using a connectionless Socket, Receive will read the first enqueued datagram from the destination address you specify in the Connect method. Si el datagrama que recibe es mayor que el tamaño del buffer parámetro, buffer se rellena con la primera parte del mensaje, se pierden los datos sobrantes y se produce SocketException una excepción.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.

Nota

Si recibe un SocketException, utilice la SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en el .NET Framework.For more information, see Network Tracing in the .NET Framework.

Seguridad

SocketPermission
para aceptar conexiones de la red.for accepting connections from the network. Enumeración asociada: Accept.Associated enumeration: Accept.

Consulte también:

Receive(Span<Byte>) Receive(Span<Byte>) Receive(Span<Byte>) Receive(Span<Byte>)

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

Parámetros

buffer
Span<Byte>

Devoluciones

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

Recibe, en la lista de búferes de recepción, datos de un Socket enlazado.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

Parámetros

buffers
IList<ArraySegment<Byte>>

Lista de ArraySegment<T> de tipo Byte que contiene los datos recibidos.A list of ArraySegment<T>s of type Byte that contains the received data.

Devoluciones

Número de bytes recibidos.The number of bytes received.

Excepciones

El parámetro buffer es null.The buffer parameter is null.

Se ha producido un error al intentar obtener acceso al socket.An error occurred while attempting to access the socket.

Comentarios

Este método lee los datos en el parámetro buffers y devuelve el número de bytes leídos correctamente.This method reads data into the buffers parameter and returns the number of bytes successfully read. Puede llamar a desde Sockets orientados a conexiones y sin conexión.You can call from both connection-oriented and connectionless sockets.

Esta sobrecarga requiere que se proporcionen uno o más búferes de recepción.This overload requires you to provide one or more receive buffers.

Si utiliza un protocolo orientado a la conexión, debe llamar Connect a para establecer una conexión de host remoto o Accept aceptar una conexión entrante antes de llamar Receivea.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. El Receive método solo leerá los datos que lleguen de la conexión al host remoto establecida Connect en Accept el método o.The Receive method will only read data that arrives from the remote host connection established in the Connect or Accept method. Si utiliza un protocolo sin conexión, también puede utilizar el ReceiveFrom método.If you are using a connectionless protocol, you can also use the ReceiveFrom method. ReceiveFromle permitirá recibir datos que llegan de cualquier host.ReceiveFrom will allow you to receive data arriving from any host.

Si no hay datos disponibles para la lectura, Receive el método se bloqueará hasta que los datos estén disponibles, a menos que se haya establecido Socket.ReceiveTimeoutun valor de tiempo de espera mediante.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. Si se supera el valor de tiempo de espera, Receive la llamada producirá SocketExceptionuna excepción.If the time-out value was exceeded, the Receive call will throw a SocketException. Si está en modo de no bloqueo y no hay ningún dato disponible en el búfer de la pila de protocolos, el Receive método se completará inmediatamente y producirá una SocketExceptionexcepción.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. Puede utilizar la propiedad Available para determinar si los datos están disponibles para su lectura.You can use the Available property to determine if data is available for reading. Cuando Available sea distinto de cero, vuelva a intentar la operación de recepción.When Available is non-zero, retry the receive operation.

Si usa una orientada Socketa la conexión, el Receive método leerá tantos datos como estén disponibles, hasta el tamaño del búfer.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. Si el host remoto cierra la Socket conexión con el Shutdown método y se han recibido todos los datos disponibles, el Receive método se completará inmediatamente y devolverá cero bytes.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.

Si está utilizando un sin conexión Socket, Receive leerá el primer datagrama en cola de la dirección de destino que especifique en el Connect método.If you are using a connectionless Socket, Receive will read the first enqueued datagram from the destination address you specify in the Connect method. Si el datagrama que recibe es mayor que el tamaño del buffers parámetro, buffers se rellena con la primera parte del mensaje, se pierden los datos sobrantes y se produce SocketException una excepción.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.

Nota

Si recibe un SocketException, utilice la SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota: Este miembro genera información de seguimiento al habilitar el seguimiento de red en la aplicación.Note This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en el .NET Framework.For more information, see Network Tracing in the .NET Framework.

Receive(Byte[]) Receive(Byte[]) Receive(Byte[]) Receive(Byte[])

Recibe datos de un Socket enlazado en un búfer de recepción.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

Parámetros

buffer
Byte[]

Matriz de tipo Byte que constituye la ubicación de almacenamiento de los datos recibidos.An array of type Byte that is the storage location for the received data.

Devoluciones

Número de bytes recibidos.The number of bytes received.

Excepciones

Error al intentar acceder al socket.An error occurred when attempting to access the socket.

Un llamador de la pila de llamadas no tiene los permisos necesarios.A caller in the call stack does not have the required permissions.

Ejemplos

En el ejemplo de código siguiente se reciben datos Socketen un conectado.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

Comentarios

El Receive método lee los datos en el parámetro de búfer y devuelve el número de bytes leídos correctamente.The Receive method reads data into the buffer parameter and returns the number of bytes successfully read. Puede llamar Receive a desde Sockets orientados a conexiones y sin conexión.You can call Receive from both connection-oriented and connectionless sockets.

Esta sobrecarga solo requiere que se proporcione un búfer de recepción.This overload only requires you to provide a receive buffer. El valor predeterminado del desplazamiento del búfer es 0, el tamaño predeterminado es la longitud del parámetro de búfer y el SocketFlags valor predeterminado es. NoneThe buffer offset defaults to 0, the size defaults to the length of the buffer parameter, and the SocketFlags value defaults to None.

Si utiliza un protocolo orientado a la conexión, debe llamar Connect a para establecer una conexión de host remoto o Accept aceptar una conexión entrante antes de llamar Receivea.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. El Receive método solo leerá los datos que lleguen desde el host remoto establecido en Connect el Accept método o.The Receive method will only read data that arrives from the remote host established in the Connect or Accept method. Si utiliza un protocolo sin conexión, también puede utilizar el ReceiveFrom método.If you are using a connectionless protocol, you can also use the ReceiveFrom method. ReceiveFromle permitirá recibir datos que llegan de cualquier host.ReceiveFrom will allow you to receive data arriving from any host.

Si no hay datos disponibles para la lectura, Receive el método se bloqueará hasta que los datos estén disponibles, a menos que se haya establecido Socket.ReceiveTimeoutun valor de tiempo de espera mediante.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. Si se supera el valor de tiempo de espera, Receive la llamada producirá SocketExceptionuna excepción.If the time-out value was exceeded, the Receive call will throw a SocketException. Si está en modo de no bloqueo y no hay ningún dato disponible en el búfer de la pila de protocolos, el Receive método se completará inmediatamente y producirá una SocketExceptionexcepción.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. Puede utilizar la propiedad Available para determinar si los datos están disponibles para su lectura.You can use the Available property to determine if data is available for reading. Cuando Available sea distinto de cero, vuelva a intentar la operación de recepción.When Available is non-zero, retry the receive operation.

Si usa una orientada Socketa la conexión, el Receive método leerá tantos datos como estén disponibles, hasta el tamaño del búfer.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. Si el host remoto cierra la Socket conexión con el Shutdown método y se han recibido todos los datos disponibles, el Receive método se completará inmediatamente y devolverá cero bytes.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.

Si está utilizando un sin conexión Socket, Receive leerá el primer datagrama en cola de la dirección de destino que especifique en el Connect método.If you are using a connectionless Socket, Receive will read the first queued datagram from the destination address you specify in the Connect method. Si el datagrama que recibe es mayor que el tamaño del buffer parámetro, buffer se rellena con la primera parte del mensaje, se pierden los datos sobrantes y se produce SocketException una excepción.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.

Nota

Si recibe un SocketException, utilice la SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en el .NET Framework.For more information, see Network Tracing in the .NET Framework.

Seguridad

SocketPermission
para aceptar conexiones de la red.for accepting connections from the network. Enumeración asociada: Accept.Associated enumeration: Accept.

Consulte también:

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

Importante

Esta API no es conforme a CLS.

Alternativa conforme a CLS
System.Net.Sockets.Socket.Receive(Byte[], SocketFlags)

Recibe, en la lista de búferes de recepción, datos de un Socket enlazado, utilizando el valor de SocketFlags especificado.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

Parámetros

buffers
IList<ArraySegment<Byte>>

Lista de ArraySegment<T> de tipo Byte que contiene los datos recibidos.A list of ArraySegment<T>s of type Byte that contains the received data.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

Combinación bit a bit de los valores de SocketFlags.A bitwise combination of the SocketFlags values.

Devoluciones

Número de bytes recibidos.The number of bytes received.

Excepciones

buffers es null.buffers is null.

o bien-or- buffers.Count es cero.buffers.Count is zero.

Se ha producido un error al intentar obtener acceso al socket.An error occurred while attempting to access the socket.

Ejemplos

En el ejemplo de código siguiente se muestra cómo recibir datos en Socketun conectado.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));

Comentarios

Este método lee los datos en buffers el parámetro y devuelve el número de bytes leídos correctamente.This method reads data into the buffers parameter and returns the number of bytes successfully read. Puede llamar a desde Sockets orientados a conexiones y sin conexión.You can call from both connection-oriented and connectionless sockets.

Esta sobrecarga requiere que se proporcionen uno o más búferes de recepción.This overload requires you to provide one or more receive buffers. El SocketFlags valor predeterminado es None.The SocketFlags value defaults to None.

Si utiliza un protocolo orientado a la conexión, debe llamar Connect a para establecer una conexión de host remoto o Accept aceptar una conexión entrante antes de llamar Receivea.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. El Receive método solo leerá los datos que lleguen de la conexión al host remoto establecida Connect en Accept el método o.The Receive method will only read data that arrives from the remote host connection established in the Connect or Accept method. Si utiliza un protocolo sin conexión, también puede utilizar el ReceiveFrom método.If you are using a connectionless protocol, you can also use the ReceiveFrom method. ReceiveFromle permitirá recibir datos que llegan de cualquier host.ReceiveFrom will allow you to receive data arriving from any host.

Si no hay datos disponibles para la lectura, Receive el método se bloqueará hasta que los datos estén disponibles, a menos que se haya establecido Socket.ReceiveTimeoutun valor de tiempo de espera mediante.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. Si se supera el valor de tiempo de espera, Receive la llamada produce una SocketExceptionexcepción.If the time-out value was exceeded, the Receive call throws a SocketException. Si está en modo de no bloqueo y no hay ningún dato disponible en el búfer de la pila de protocolos, el Receive método se completará inmediatamente y producirá una SocketExceptionexcepción.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. Puede utilizar la propiedad Available para determinar si los datos están disponibles para su lectura.You can use the Available property to determine if data is available for reading. Cuando Available sea distinto de cero, vuelva a intentar la operación de recepción.When Available is non-zero, retry the receive operation.

Si usa una orientada Socketa la conexión, el Receive método leerá tantos datos como estén disponibles, hasta el tamaño del búfer.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. Si el host remoto cierra la Socket conexión con el Shutdown método y se han recibido todos los datos disponibles, el Receive método se completará inmediatamente y devolverá cero bytes.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.

Si está utilizando un sin conexión Socket, Receive leerá el primer datagrama en cola de la dirección de destino que especifique en el Connect método.If you are using a connectionless Socket, Receive will read the first enqueued datagram from the destination address you specify in the Connect method. Si el datagrama que recibe es mayor que el tamaño del buffers parámetro, buffers se rellena con la primera parte del mensaje, se pierden los datos sobrantes y se produce SocketException una excepción.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.

Nota

Si recibe un SocketException, utilice la SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en el .NET Framework.For more information, see Network Tracing in the .NET Framework.

Seguridad

SocketPermission
para aceptar conexiones de la red.for accepting connections from the network. Enumeración asociada: Accept.Associated enumeration: Accept.

Consulte también:

Se aplica a