Socket.Receive Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
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
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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
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
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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
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 buffer
y 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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
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
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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
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
- 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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
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
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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
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
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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()