Comparteix a través de


Socket.Receive Método

Definición

Recibe datos de un objeto Socket enlazado.

Sobrecargas

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.

Receive(Span<Byte>, SocketFlags, SocketError)

Recibe datos de un Socket enlazado en un búfer de recepción, usando el valor de SocketFlags especificado.

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.

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.

Receive(Span<Byte>, SocketFlags)

Recibe datos de un Socket enlazado en un búfer de recepción, usando el valor de SocketFlags especificado.

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.

Receive(Byte[], SocketFlags)

Recibe datos de un Socket enlazado en un búfer de recepción, usando el valor de SocketFlags especificado.

Receive(Span<Byte>)

Recibe datos de un Socket enlazado en un búfer de recepción.

Receive(IList<ArraySegment<Byte>>)

Recibe, en la lista de búferes de recepción, datos de un Socket enlazado.

Receive(Byte[])

Recibe datos de un Socket enlazado en un búfer de recepción.

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.

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

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Recibe datos de un Socket enlazado en un búfer de recepción, usando el valor de SocketFlags especificado.

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
Public Function Receive (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

Parámetros

buffer
Byte[]

Matriz de tipo Byte que constituye la ubicación de almacenamiento de los datos recibidos.

offset
Int32

Posición en el parámetro buffer para almacenar los datos recibidos.

size
Int32

Número de bytes que se va a recibir.

socketFlags
SocketFlags

Combinación bit a bit de los valores de SocketFlags.

errorCode
SocketError

Objeto SocketError que almacena el error de socket.

Devoluciones

Número de bytes recibidos.

Excepciones

buffer es null.

offset es menor que 0.

O bien

offset es mayor que la longitud de buffer.

O bien

size es menor que 0.

o bien

size es mayor que la longitud de buffer menos el valor del parámetro offset .

El Socket se ha cerrado.

Un llamador de la pila de llamadas no tiene los permisos necesarios.

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. Puede llamar Receive desde sockets orientados a la conexión y sin conexión.

Si usa un protocolo orientado a la conexión, debe llamar Connect a para establecer una conexión de host remota o Accept para aceptar una conexión entrante antes de llamar Receivea . El Receive método solo leerá los datos que llegan desde el host remoto establecido en el Connect método o Accept . Si usa un protocolo sin conexión, también puede usar el ReceiveFrom método . ReceiveFrom le permitirá recibir datos que llegan desde cualquier host.

Si no hay datos disponibles para su lectura, el Receive método se bloqueará hasta que los datos estén disponibles, a menos que se establezca un valor de tiempo de espera mediante Socket.ReceiveTimeout. Si se superó el valor de tiempo de espera, la Receive llamada producirá una SocketExceptionexcepción . Si se encuentra en modo de no bloqueo y no hay datos disponibles en el búfer de pila de protocolos, el Receive método se completará inmediatamente y producirá un SocketException. Error al intentar acceder al socket. Consulte los comentarios indicados más adelante. Puede usar la Available propiedad para determinar si los datos están disponibles para su lectura. Cuando Available es distinto de cero, vuelva a intentar la operación de recepción.

Si usa un objeto orientado Socketa la conexión, el Receive método leerá tantos datos como estén disponibles, hasta el número de bytes especificados por el parámetro size. 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.

Si usa 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 . 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 pierde el exceso de datos y se produce una SocketException excepción .

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, vea Seguimiento de red en .NET Framework.

Consulte también

Se aplica a

Receive(Span<Byte>, SocketFlags, SocketError)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Recibe datos de un Socket enlazado en un búfer de recepción, usando el valor de SocketFlags especificado.

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
Public Function Receive (buffer As Span(Of Byte), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

Parámetros

buffer
Span<Byte>

Intervalo de bytes que constituye la ubicación de almacenamiento de los datos recibidos.

socketFlags
SocketFlags

Combinación bit a bit de los valores de enumeración que especifica los comportamientos de envío y recepción.

errorCode
SocketError

Cuando este método termina de ejecutarse, contiene uno de los valores de enumeración que define los códigos de error del socket.

Devoluciones

Número de bytes recibidos.

Excepciones

Error al intentar acceder al socket.

El Socket se ha cerrado.

Un llamador de la pila de llamadas no tiene los permisos necesarios.

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. Puede llamar Receive desde sockets orientados a la conexión y sin conexión.

Esta sobrecarga solo requiere que proporcione un búfer de recepción. El desplazamiento del búfer tiene como valor predeterminado 0, el tamaño tiene como valor predeterminado la longitud del parámetro de búfer y el SocketFlags valor predeterminado es None.

Si usa un protocolo orientado a la conexión, debe llamar Connect a para establecer una conexión de host remota o Accept para aceptar una conexión entrante antes de llamar Receivea . El Receive método solo leerá los datos que llegan desde el host remoto establecido en el Connect método o Accept . Si usa un protocolo sin conexión, también puede usar el ReceiveFrom método . ReceiveFrom le permitirá recibir datos que llegan desde cualquier host.

Si no hay datos disponibles para su lectura, el Receive método se bloqueará hasta que los datos estén disponibles, a menos que se establezca un valor de tiempo de espera mediante Socket.ReceiveTimeout. Cuando se supera el valor de tiempo de espera, la Receive llamada producirá una SocketExceptionexcepción . Si está en modo de no bloqueo y no hay datos disponibles en el búfer de la pila de protocolos, el Receive método se completará inmediatamente y producirá un SocketException. Puede usar la Available propiedad para determinar si los datos están disponibles para su lectura. Cuando Available es distinto de cero, vuelva a intentar la operación de recepción.

Si usa una conexión orientada Socketa la conexión, el Receive método leerá tantos datos como estén disponibles, hasta el tamaño del búfer. 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.

Si usa un sin Socketconexión, Receive leerá el primer datagrama en cola de la dirección de destino que especifique en el Connect método . 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 pierde el exceso de datos y se produce una SocketException excepción .

Nota

Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico. 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.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, vea Seguimiento de red en .NET Framework.

Consulte también

Se aplica a

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

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Recibe, en la lista de búferes de recepción, datos de un Socket enlazado, utilizando el valor de SocketFlags especificado.

public:
 int Receive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
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
Public Function Receive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

Parámetros

buffers
IList<ArraySegment<Byte>>

Lista de ArraySegment<T> de tipo Byte que contiene los datos recibidos.

socketFlags
SocketFlags

Combinación bit a bit de los valores de SocketFlags.

errorCode
SocketError

Objeto SocketError que almacena el error de socket.

Devoluciones

Número de bytes recibidos.

Excepciones

buffers es null.

o bien

buffers.Count es cero.

Se ha producido un error al intentar obtener acceso al socket.

El Socket se ha cerrado.

Comentarios

Este método lee los datos en el buffers parámetro y devuelve el número de bytes leídos correctamente. Puede llamar desde sockets orientados a la conexión y sin conexión.

Esta sobrecarga requiere que proporcione uno o varios búferes de recepción. El SocketFlags valor predeterminado es None.

Si usa un protocolo orientado a la conexión, debe llamar Connect a para establecer una conexión de host remota o Accept para aceptar una conexión entrante antes de llamar Receivea . El Receive método solo leerá los datos que llegan desde la conexión de host remota establecida en el Connect método o Accept . Si usa un protocolo sin conexión, también puede usar el ReceiveFrom método . ReceiveFrom le permitirá recibir datos que llegan desde cualquier host.

Si no hay datos disponibles para su lectura, el Receive método se bloqueará hasta que los datos estén disponibles, a menos que se establezca un valor de tiempo de espera mediante Socket.ReceiveTimeout. Si se superó el valor de tiempo de espera, la Receive llamada produce una SocketExceptionexcepción . Si se encuentra en modo de no bloqueo y no hay datos disponibles en el búfer de pila de protocolos, el Receive método se completará inmediatamente y producirá un SocketException. Puede usar la Available propiedad para determinar si los datos están disponibles para su lectura. Cuando Available es distinto de cero, vuelva a intentar la operación de recepción.

Si usa una conexión orientada Socketa la conexión, el Receive método leerá tantos datos como estén disponibles, hasta el tamaño del búfer. 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.

Si usa 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 . 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 pierde el exceso de datos y se produce una SocketException excepción .

Nota

Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico. 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.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, vea Seguimiento de red en .NET Framework.

Consulte también

Se aplica a

Receive(Byte[], Int32, SocketFlags)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

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.

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
Public Function Receive (buffer As Byte(), size As Integer, socketFlags As SocketFlags) As Integer

Parámetros

buffer
Byte[]

Matriz de tipo Byte que constituye la ubicación de almacenamiento de los datos recibidos.

size
Int32

Número de bytes que se va a recibir.

socketFlags
SocketFlags

Combinación bit a bit de los valores de SocketFlags.

Devoluciones

Número de bytes recibidos.

Excepciones

buffer es null.

size sobrepasa el tamaño de buffer.

Error al intentar acceder al socket.

El Socket se ha cerrado.

Un llamador de la pila de llamadas no tiene los permisos necesarios.

Ejemplos

A continuación se reciben los datos encontrados en buffery se especifica None para 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 el buffer parámetro y devuelve el número de bytes leídos correctamente. Puede llamar Receive desde sockets orientados a la conexión y sin conexión.

Esta sobrecarga solo requiere que proporcione un búfer de recepción, el número de bytes que desea recibir y el necesario SocketFlags.

Si usa un protocolo orientado a la conexión, debe llamar Connect a para establecer una conexión de host remota o Accept para aceptar una conexión entrante antes de llamar Receivea . El Receive método solo leerá los datos que llegan desde el host remoto establecido en el Connect método o Accept . Si usa un protocolo sin conexión, también puede usar el ReceiveFrom método . ReceiveFrom le permitirá recibir datos que llegan desde cualquier host.

Si no hay datos disponibles para su lectura, el Receive método se bloqueará hasta que los datos estén disponibles, a menos que se establezca un valor de tiempo de espera mediante Socket.ReceiveTimeout. Si se superó el valor de tiempo de espera, la Receive llamada producirá una SocketExceptionexcepción . Si se encuentra en modo de no bloqueo y no hay datos disponibles en el búfer de pila de protocolos, el Receive método se completará inmediatamente y producirá un SocketException. Puede usar la Available propiedad para determinar si los datos están disponibles para su lectura. Cuando Available es distinto de cero, vuelva a intentar la operación de recepción.

Si usa una conexión orientada Socketa la conexión, el Receive método leerá tantos datos como estén disponibles, hasta el número de bytes especificados por el size parámetro . 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.

Si usa 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 . 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 pierde el exceso de datos y se produce una SocketException excepción .

Nota

Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico. 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.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, vea Seguimiento de red en .NET Framework.

Consulte también

Se aplica a

Receive(Span<Byte>, SocketFlags)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Recibe datos de un Socket enlazado en un búfer de recepción, usando el valor de SocketFlags especificado.

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
Public Function Receive (buffer As Span(Of Byte), socketFlags As SocketFlags) As Integer

Parámetros

buffer
Span<Byte>

Intervalo de bytes que constituye la ubicación de almacenamiento de los datos recibidos.

socketFlags
SocketFlags

Combinación bit a bit de los valores de enumeración que especifica los comportamientos de envío y recepción.

Devoluciones

Número de bytes recibidos.

Excepciones

Error al intentar acceder al socket.

El Socket se ha cerrado.

Un llamador de la pila de llamadas no tiene los permisos necesarios.

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. Puede llamar Receive desde sockets orientados a la conexión y sin conexión.

Esta sobrecarga solo requiere que proporcione un búfer de recepción. El desplazamiento del búfer tiene como valor predeterminado 0, el tamaño tiene como valor predeterminado la longitud del parámetro de búfer y el SocketFlags valor predeterminado es None.

Si usa un protocolo orientado a la conexión, debe llamar Connect a para establecer una conexión de host remota o Accept para aceptar una conexión entrante antes de llamar Receivea . El Receive método solo leerá los datos que llegan desde el host remoto establecido en el Connect método o Accept . Si usa un protocolo sin conexión, también puede usar el ReceiveFrom método . ReceiveFrom le permitirá recibir datos que llegan desde cualquier host.

Si no hay datos disponibles para su lectura, el Receive método se bloqueará hasta que los datos estén disponibles, a menos que se establezca un valor de tiempo de espera mediante Socket.ReceiveTimeout. Cuando se supera el valor de tiempo de espera, la Receive llamada producirá una SocketExceptionexcepción . Si se encuentra en modo de no bloqueo y no hay datos disponibles en el búfer de pila de protocolos, el Receive método se completará inmediatamente y producirá un SocketException. Puede usar la Available propiedad para determinar si los datos están disponibles para su lectura. Cuando Available es distinto de cero, vuelva a intentar la operación de recepción.

Si usa una conexión orientada Socketa la conexión, el Receive método leerá tantos datos como estén disponibles, hasta el tamaño del búfer. 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.

Si usa un sin Socketconexión, Receive leerá el primer datagrama en cola de la dirección de destino que especifique en el Connect método . 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 pierde el exceso de datos y se produce una SocketException excepción .

Nota

Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico. 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.

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, vea Seguimiento de red en .NET Framework.

Consulte también

Se aplica a

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

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

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.

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
Public Function Receive (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags) As Integer

Parámetros

buffer
Byte[]

Matriz de tipo Byte que es la ubicación de almacenamiento para los datos recibidos.

offset
Int32

Ubicación de buffer en la que se almacenarán los datos recibidos.

size
Int32

Número de bytes que se va a recibir.

socketFlags
SocketFlags

Combinación bit a bit de los valores de SocketFlags.

Devoluciones

Número de bytes recibidos.

Excepciones

buffer es null.

offset es menor que 0.

O bien

offset es mayor que la longitud de buffer.

O bien

size es menor que 0.

o bien

size es mayor que la longitud de buffer menos el valor del parámetro offset.

socketFlags no es una combinación válida de valores.

o bien

La propiedad LocalEndPoint no se estableció.

o bien

Se produce un error de sistema operativo al acceder a Socket.

El Socket se ha cerrado.

Un llamador de la pila de llamadas no tiene los permisos necesarios.

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 recibir datos en un conectado 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, bytes.Length, SocketFlags.None);

        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
    }
    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. Puede llamar Receive desde sockets orientados a la conexión y sin conexión.

Si usa un protocolo orientado a la conexión, debe llamar Connect a para establecer una conexión de host remota o Accept para aceptar una conexión entrante antes de llamar Receivea . El Receive método solo leerá los datos que llegan desde el host remoto establecido en el Connect método o Accept . Si usa un protocolo sin conexión, también puede usar el ReceiveFrom método . ReceiveFrom le permitirá recibir datos que llegan desde cualquier host.

Si no hay datos disponibles para su lectura, el Receive método se bloqueará hasta que los datos estén disponibles, a menos que se establezca un valor de tiempo de espera mediante Socket.ReceiveTimeout. Si se superó el valor de tiempo de espera, la Receive llamada producirá una SocketExceptionexcepción . Si se encuentra en modo de no bloqueo y no hay datos disponibles en el búfer de pila de protocolos, el Receive método se completará inmediatamente y producirá un SocketException. Error al intentar acceder al socket. Consulte los comentarios indicados más adelante. Puede usar la Available propiedad para determinar si los datos están disponibles para su lectura. Cuando Available es distinto de cero, vuelva a intentar la operación de recepción.

Si usa un objeto orientado Socketa la conexión, el Receive método leerá tantos datos como estén disponibles, hasta el número de bytes especificados por el parámetro size. 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.

Si usa 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 . 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 pierde el exceso de datos y se produce una SocketException excepción .

Nota

Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico. 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.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, vea Seguimiento de red en .NET Framework.

Consulte también

Se aplica a

Receive(Byte[], SocketFlags)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Recibe datos de un Socket enlazado en un búfer de recepción, usando el valor de SocketFlags especificado.

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
Public Function Receive (buffer As Byte(), socketFlags As SocketFlags) As Integer

Parámetros

buffer
Byte[]

Matriz de tipo Byte que constituye la ubicación de almacenamiento de los datos recibidos.

socketFlags
SocketFlags

Combinación bit a bit de los valores de SocketFlags.

Devoluciones

Número de bytes recibidos.

Excepciones

buffer es null.

Error al intentar acceder al socket.

El Socket se ha cerrado.

Un llamador de la pila de llamadas no tiene los permisos necesarios.

Ejemplos

En el ejemplo de código siguiente se especifica un búfer de datos y SocketFlags para recibir datos en un conectado 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. Puede llamar Receive desde sockets orientados a la conexión y sin conexión.

Esta sobrecarga solo requiere que proporcione un búfer de recepción y el necesario SocketFlags. El desplazamiento del búfer tiene como valor predeterminado 0 y el tamaño tiene como valor predeterminado la longitud del parámetro byte.

Si usa un protocolo orientado a la conexión, debe llamar Connect a para establecer una conexión de host remota o Accept para aceptar una conexión entrante antes de llamar Receivea . El Receive método solo leerá los datos que llegan desde el host remoto establecido en el Connect método o Accept . Si usa un protocolo sin conexión, también puede usar el ReceiveFrom método . ReceiveFrom le permitirá recibir datos que llegan desde cualquier host.

Si no hay datos disponibles para su lectura, el Receive método se bloqueará hasta que los datos estén disponibles. Si se encuentra en modo de no bloqueo y no hay datos disponibles en el búfer de pila de protocolos, el Receive método se completará inmediatamente y producirá un SocketException. Puede usar la Available propiedad para determinar si los datos están disponibles para su lectura. Cuando Available es distinto de cero, vuelva a intentar la operación de recepción.

Si usa un objeto orientado Socketa la conexión, el Receive método leerá tantos datos como estén disponibles hasta el tamaño del búfer. 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.

Si usa un sin Socketconexión, Receive leerá el primer datagrama en cola de la dirección de destino que especifique en el Connect método . 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 pierde el exceso de datos y se produce una SocketException excepción .

Nota

Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico. 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.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, vea Seguimiento de red en .NET Framework.

Consulte también

Se aplica a

Receive(Span<Byte>)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Recibe datos de un Socket enlazado en un búfer de recepción.

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>

Intervalo de bytes que constituye la ubicación de almacenamiento de los datos recibidos.

Devoluciones

Número de bytes recibidos.

Excepciones

Error al intentar acceder al socket.

El Socket se ha cerrado.

Un llamador de la pila de llamadas no tiene los permisos necesarios.

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. Puede llamar Receive desde sockets orientados a la conexión y sin conexión.

Esta sobrecarga solo requiere que proporcione un búfer de recepción. El desplazamiento del búfer tiene como valor predeterminado 0, el tamaño tiene como valor predeterminado la longitud del parámetro de búfer y el SocketFlags valor predeterminado es None.

Si usa un protocolo orientado a la conexión, debe llamar Connect a para establecer una conexión de host remota o Accept para aceptar una conexión entrante antes de llamar a Receive. El Receive método solo leerá los datos que llegan desde el host remoto establecido en el Connect método o Accept . Si usa un protocolo sin conexión, también puede usar el ReceiveFrom método . ReceiveFrom le permitirá recibir datos que llegan desde cualquier host.

Si no hay datos disponibles para su lectura, el Receive método se bloqueará hasta que los datos estén disponibles, a menos que se establezca un valor de tiempo de espera mediante Socket.ReceiveTimeout. Cuando se supera el valor de tiempo de espera, la Receive llamada producirá una SocketExceptionexcepción . Si está en modo de no bloqueo y no hay datos disponibles en el búfer de la pila de protocolos, el Receive método se completará inmediatamente y producirá un SocketException. Puede usar la Available propiedad para determinar si los datos están disponibles para su lectura. Cuando Available es distinto de cero, vuelva a intentar la operación de recepción.

Si usa una conexión orientada Socketa la conexión, el Receive método leerá tantos datos como estén disponibles, hasta el tamaño del búfer. 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.

Si usa un sin Socketconexión, Receive leerá el primer datagrama en cola de la dirección de destino que especifique en el Connect método . 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 pierde el exceso de datos y se produce una SocketException excepción .

Nota

Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico. 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.

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, vea Seguimiento de red en .NET Framework.

Consulte también

Se aplica a

Receive(IList<ArraySegment<Byte>>)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Recibe, en la lista de búferes de recepción, datos de un Socket enlazado.

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.

Devoluciones

Número de bytes recibidos.

Excepciones

El parámetro buffer es null.

Se ha producido un error al intentar obtener acceso al socket.

El Socket se ha cerrado.

Comentarios

Este método lee los datos en el parámetro buffers y devuelve el número de bytes leídos correctamente. Puede llamar desde sockets orientados a la conexión y sin conexión.

Esta sobrecarga requiere que proporcione uno o varios búferes de recepción.

Si usa un protocolo orientado a la conexión, debe llamar Connect a para establecer una conexión de host remota o Accept para aceptar una conexión entrante antes de llamar Receivea . El Receive método solo leerá los datos que llegan desde la conexión de host remota establecida en el Connect método o Accept . Si usa un protocolo sin conexión, también puede usar el ReceiveFrom método . ReceiveFrom le permitirá recibir datos que llegan desde cualquier host.

Si no hay datos disponibles para la lectura, el Receive método se bloqueará hasta que los datos estén disponibles, a menos que se establezca un valor de tiempo de espera mediante Socket.ReceiveTimeout. Si se superó el valor de tiempo de espera, la Receive llamada producirá un SocketException. Si está en modo de no bloqueo y no hay datos disponibles en el búfer de pila de protocolos, el Receive método se completará inmediatamente y generará un SocketException. Puede usar la Available propiedad para determinar si los datos están disponibles para su lectura. Cuando Available no es cero, vuelva a intentar la operación de recepción.

Si usa un método orientado a Socketla conexión, el Receive método leerá tantos datos como estén disponibles, hasta el tamaño del búfer. 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.

Si usa un datagrama sin Socketconexión, Receive leerá el primer datagrama en cola de la dirección de destino que especifique en el Connect método . 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 excesivos y se produce una SocketException excepción .

Nota

Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico. 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.

Nota Este miembro genera información de seguimiento al habilitar el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.

Se aplica a

Receive(Byte[])

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Recibe datos de un Socket enlazado en un búfer de recepción.

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.

Devoluciones

Número de bytes recibidos.

Excepciones

buffer es null.

Error al intentar acceder al socket.

El Socket se ha cerrado.

Un llamador de la pila de llamadas no tiene los permisos necesarios.

Ejemplos

En el ejemplo de código siguiente se reciben datos de un objeto conectado 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. Puede llamar Receive desde sockets sin conexión y orientados a la conexión.

Esta sobrecarga solo requiere que proporcione un búfer de recepción. El desplazamiento del búfer tiene como valor predeterminado 0, el tamaño predeterminado es la longitud del parámetro de búfer y el SocketFlags valor predeterminado es None.

Si usa un protocolo orientado a la conexión, debe llamar Connect a para establecer una conexión de host remota o Accept para aceptar una conexión entrante antes de llamar Receivea . El Receive método solo leerá los datos que llegan desde el host remoto establecido en el Connect método o Accept . Si usa un protocolo sin conexión, también puede usar el ReceiveFrom método . ReceiveFrom le permitirá recibir datos que llegan desde cualquier host.

Si no hay datos disponibles para la lectura, el Receive método se bloqueará hasta que los datos estén disponibles, a menos que se establezca un valor de tiempo de espera mediante Socket.ReceiveTimeout. Si se superó el valor de tiempo de espera, la Receive llamada producirá un SocketException. Si está en modo de no bloqueo y no hay datos disponibles en el búfer de pila de protocolos, el Receive método se completará inmediatamente y generará un SocketException. Puede usar la Available propiedad para determinar si los datos están disponibles para su lectura. Cuando Available no es cero, vuelva a intentar la operación de recepción.

Si usa un método orientado a Socketla conexión, el Receive método leerá tantos datos como estén disponibles, hasta el tamaño del búfer. 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.

Si usa 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 . 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 excesivos y se produce una SocketException excepción .

Nota

Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico. 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.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.

Consulte también

Se aplica a

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

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Recibe, en la lista de búferes de recepción, datos de un Socket enlazado, utilizando el valor de SocketFlags especificado.

public:
 int Receive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
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
Public Function Receive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Integer

Parámetros

buffers
IList<ArraySegment<Byte>>

Lista de ArraySegment<T> de tipo Byte que contiene los datos recibidos.

socketFlags
SocketFlags

Combinación bit a bit de los valores de SocketFlags.

Devoluciones

Número de bytes recibidos.

Excepciones

buffers es null.

o bien

buffers.Count es cero.

Se ha producido un error al intentar obtener acceso al socket.

El Socket se ha cerrado.

Ejemplos

En el ejemplo de código siguiente se muestra cómo recibir datos en un objeto conectado 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 el buffers parámetro y devuelve el número de bytes leídos correctamente. Puede llamar desde sockets sin conexión y orientados a la conexión.

Esta sobrecarga requiere que proporcione uno o varios búferes de recepción. El SocketFlags valor predeterminado es None.

Si usa un protocolo orientado a la conexión, debe llamar Connect a para establecer una conexión de host remota o Accept para aceptar una conexión entrante antes de llamar Receivea . El Receive método solo leerá los datos que llegan desde la conexión de host remota establecida en el Connect método o Accept . Si usa un protocolo sin conexión, también puede usar el ReceiveFrom método . ReceiveFrom le permitirá recibir datos que llegan desde cualquier host.

Si no hay datos disponibles para la lectura, el Receive método se bloqueará hasta que los datos estén disponibles, a menos que se establezca un valor de tiempo de espera mediante Socket.ReceiveTimeout. Si se superó el valor de tiempo de espera, la Receive llamada produce un SocketException. Si está en modo de no bloqueo y no hay datos disponibles en el búfer de pila de protocolos, el Receive método se completará inmediatamente y generará un SocketException. Puede usar la Available propiedad para determinar si los datos están disponibles para su lectura. Cuando Available no es cero, vuelva a intentar la operación de recepción.

Si usa un método orientado a Socketla conexión, el Receive método leerá tantos datos como estén disponibles, hasta el tamaño del búfer. 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.

Si usa un datagrama sin Socketconexión, Receive leerá el primer datagrama en cola de la dirección de destino que especifique en el Connect método . 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 excesivos y se produce una SocketException excepción .

Nota

Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico. 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.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.

Consulte también

Se aplica a