Socket.ReceiveFrom 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 un datagrama y almacena el punto de conexión de origen.
Sobrecargas
| Nombre | Description |
|---|---|
| ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint) |
Recibe el número especificado de bytes en el búfer de datos, mediante el especificado SocketFlagsy almacena el punto de conexión. |
| ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint) |
Recibe el número especificado de bytes de datos en la ubicación especificada del búfer de datos, mediante el especificado SocketFlagsy almacena el punto de conexión. |
| ReceiveFrom(Span<Byte>, SocketFlags, EndPoint) |
Recibe un datagrama en el búfer de datos, mediante el especificado SocketFlagsy almacena el punto de conexión. |
| ReceiveFrom(Byte[], SocketFlags, EndPoint) |
Recibe un datagrama en el búfer de datos, mediante el especificado SocketFlagsy almacena el punto de conexión. |
| ReceiveFrom(Span<Byte>, SocketFlags, SocketAddress) |
Recibe un datagrama en el búfer de datos, mediante el especificado SocketFlagsy almacena el punto de conexión. |
| ReceiveFrom(Span<Byte>, EndPoint) |
Recibe un datagrama en el búfer de datos y almacena el punto de conexión. |
| ReceiveFrom(Byte[], EndPoint) |
Recibe un datagrama en el búfer de datos y almacena el punto de conexión. |
ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Recibe el número especificado de bytes en el búfer de datos, mediante el especificado SocketFlagsy almacena el punto de conexión.
public:
int ReceiveFrom(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom(byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * int * System.Net.Sockets.SocketFlags * EndPoint -> int
Public Function ReceiveFrom (buffer As Byte(), size As Integer, socketFlags As SocketFlags, ByRef remoteEP As EndPoint) As Integer
Parámetros
- size
- Int32
Número de bytes que se van a recibir.
- socketFlags
- SocketFlags
Combinación bit a bit de los SocketFlags valores.
- remoteEP
- EndPoint
Referencia a un EndPoint de tipo del mismo tipo que el punto de conexión del host remoto que se va a actualizar al recibir correctamente.
Devoluciones
Número de bytes recibidos.
Excepciones
socketFlags no es una combinación válida de valores.
O bien
No se estableció la LocalEndPoint propiedad .
O bien
Se produce un error del sistema operativo al acceder a .Socket
Se Socket ha cerrado.
Un autor de llamada de la pila de llamadas no tiene los permisos necesarios.
Ejemplos
En el ejemplo de código siguiente se recibe un datagrama sin conexión de un host remoto. El tamaño del búfer y SocketFlags se pasan al ReceiveFrom método .
public static void ReceiveFrom3()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
// Creates an IPEndPoint to capture the identity of the sending host.
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint senderRemote = (EndPoint)sender;
// Binding is required with ReceiveFrom calls.
s.Bind(endPoint);
byte[] msg = new Byte[256];
Console.WriteLine("Waiting to receive datagrams from client...");
// This call blocks.
s.ReceiveFrom(msg, msg.Length, SocketFlags.None, ref senderRemote);
s.Close();
}
Public Shared Sub ReceiveFrom3()
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
' Creates an IPEndPoint to capture the identity of the sending host.
Dim sender As New IPEndPoint(IPAddress.Any, 0)
Dim senderRemote As EndPoint = CType(sender, EndPoint)
' Binding is required with ReceiveFrom calls.
s.Bind(endPoint)
Dim msg() As Byte = New [Byte](255) {}
Console.WriteLine("Waiting to receive datagrams from client...")
' This call blocks.
s.ReceiveFrom(msg, msg.Length, SocketFlags.None, senderRemote)
s.Close()
End Sub
Comentarios
El ReceiveFrom método lee los datos en el buffer parámetro , devuelve el número de bytes leídos correctamente y captura el punto de conexión del host remoto desde el que se enviaron los datos. Este método es útil si tiene previsto recibir datagramas sin conexión de un host desconocido o varios hosts.
Esta sobrecarga solo requiere que proporcione un búfer de recepción, el número de bytes que desea recibir, el necesario SocketFlagsy un EndPoint que represente el host remoto. El desplazamiento del búfer tiene como valor predeterminado 0.
Con los protocolos sin conexión, ReceiveFrom leerá el primer datagrama en cola recibido en el búfer de red local. Si el datagrama que recibe es mayor que el tamaño de buffer, el ReceiveFrom método se rellenará buffer con la mayor cantidad posible del mensaje y producirá una SocketExceptionexcepción . Si usa un protocolo no confiable, se perderán los datos excesivos. Si usa un protocolo confiable, el proveedor de servicios conservará los datos excesivos y podrá recuperarlos llamando al ReceiveFrom método con un búfer lo suficientemente grande.
Si no hay datos disponibles para la lectura, el ReceiveFrom método se bloqueará hasta que los datos estén disponibles. Si está en modo de no bloqueo y no hay datos disponibles en el búfer de la pila de protocolos, el ReceiveFrom 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 no es cero, vuelva a intentar la operación de recepción.
Aunque ReceiveFrom está pensado para protocolos sin conexión, también puede usar un protocolo orientado a la conexión. Si decide hacerlo, primero debe establecer una conexión de host remoto llamando al Connect método o aceptando una conexión de host remoto entrante llamando al Accept método . Si no establece ni acepta una conexión antes de llamar al ReceiveFrom método , obtendrá un SocketException. También puede establecer un host remoto predeterminado para un protocolo sin conexión antes de llamar al ReceiveFrom método .
Con sockets orientados a la conexión, ReceiveFrom 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 ReceiveFrom método se completará inmediatamente y devolverá cero bytes.
Nota:
Antes de llamar a ReceiveFrom, debe enlazar explícitamente a Socket un punto de conexión local mediante el Bind método . Si no lo hace, ReceiveFrom iniciará una SocketExceptionexcepción . 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:
del AddressFamilyEndPoint objeto utilizado en ReceiveFrom debe coincidir con el AddressFamily de utilizado EndPoint en SendTo.
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.
Consulte también
- Connect(EndPoint)
- Receive(Byte[], Int32, SocketFlags)
- Available
- Shutdown(SocketShutdown)
- Close()
- SocketFlags
Se aplica a
ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Recibe el número especificado de bytes de datos en la ubicación especificada del búfer de datos, mediante el especificado SocketFlagsy almacena el punto de conexión.
public:
int ReceiveFrom(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * int * int * System.Net.Sockets.SocketFlags * EndPoint -> int
Public Function ReceiveFrom (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef remoteEP As EndPoint) As Integer
Parámetros
- offset
- Int32
Posición en el buffer parámetro para almacenar los datos recibidos.
- size
- Int32
Número de bytes que se van a recibir.
- socketFlags
- SocketFlags
Combinación bit a bit de los SocketFlags valores.
- remoteEP
- EndPoint
Referencia a un EndPoint de tipo del mismo tipo que el punto de conexión del host remoto que se va a actualizar al recibir correctamente.
Devoluciones
Número de bytes recibidos.
Excepciones
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 del buffer menos el valor del parámetro offset.
socketFlags no es una combinación válida de valores.
O bien
No se estableció la LocalEndPoint propiedad .
O bien
Error al intentar acceder al socket.
Se Socket ha cerrado.
Ejemplos
En el ejemplo de código siguiente se recibe un datagrama sin conexión de un host remoto. El desplazamiento, el tamaño del búfer y SocketFlags se pasan al ReceiveFrom método .
public static void ReceiveFrom4()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
// Creates an IpEndPoint to capture the identity of the sending host.
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint senderRemote = (EndPoint)sender;
// Binding is required with ReceiveFrom calls.
s.Bind(endPoint);
byte[] msg = new Byte[256];
Console.WriteLine("Waiting to receive datagrams from client...");
// This call blocks.
s.ReceiveFrom(msg, 0, msg.Length, SocketFlags.None, ref senderRemote);
s.Close();
}
Public Shared Sub ReceiveFrom4()
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
' Creates an IpEndPoint to capture the identity of the sending host.
Dim sender As New IPEndPoint(IPAddress.Any, 0)
Dim senderRemote As EndPoint = CType(sender, EndPoint)
' Binding is required with ReceiveFrom calls.
s.Bind(endPoint)
Dim msg() As Byte = New [Byte](255) {}
Console.WriteLine("Waiting to receive datagrams from client...")
' This call blocks.
s.ReceiveFrom(msg, 0, msg.Length, SocketFlags.None, senderRemote)
s.Close()
End Sub
Comentarios
El ReceiveFrom método lee los datos en el buffer parámetro , devuelve el número de bytes leídos correctamente y captura el punto de conexión del host remoto desde el que se enviaron los datos. Este método es útil si tiene previsto recibir datagramas sin conexión de un host desconocido o varios hosts.
Con los protocolos sin conexión, ReceiveFrom leerá el primer datagrama en cola recibido en el búfer de red local. Si el datagrama que recibe es mayor que el tamaño de buffer, el ReceiveFrom método se rellenará buffer con la mayor cantidad posible del mensaje y producirá una SocketExceptionexcepción . Si usa un protocolo no confiable, se perderán los datos excesivos. Si usa un protocolo confiable, el proveedor de servicios conservará los datos excesivos y podrá recuperarlos llamando al ReceiveFrom método con un búfer lo suficientemente grande.
Si no hay datos disponibles para la lectura, el ReceiveFrom método se bloqueará hasta que los datos estén disponibles. Si está en modo de no bloqueo y no hay datos disponibles en el búfer de la pila de protocolos, el ReceiveFrom 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 no es cero, vuelva a intentar la operación de recepción.
Aunque ReceiveFrom está pensado para protocolos sin conexión, también puede usar un protocolo orientado a la conexión. Si decide hacerlo, primero debe establecer una conexión de host remoto llamando al Connect método o aceptando una conexión de host remoto entrante llamando al Accept método . Si no establece ni acepta una conexión antes de llamar al ReceiveFrom método , obtendrá un SocketException. También puede establecer un host remoto predeterminado para un protocolo sin conexión antes de llamar al ReceiveFrom método .
Con sockets orientados a la conexión, ReceiveFrom leerá tantos datos como estén disponibles hasta la cantidad 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 ReceiveFrom método se completará inmediatamente y devolverá cero bytes.
Nota:
Antes de llamar a ReceiveFrom, debe enlazar explícitamente a Socket un punto de conexión local mediante el Bind método . Si no lo hace, ReceiveFrom iniciará una SocketExceptionexcepción . 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:
del AddressFamilyEndPoint objeto utilizado en ReceiveFrom debe coincidir con el AddressFamily de utilizado EndPoint en SendTo.
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.
Consulte también
- Connect(EndPoint)
- Receive(Byte[], Int32, SocketFlags)
- Available
- Shutdown(SocketShutdown)
- Close()
- SocketFlags
Se aplica a
ReceiveFrom(Span<Byte>, SocketFlags, EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Recibe un datagrama en el búfer de datos, mediante el especificado SocketFlagsy almacena el punto de conexión.
public:
int ReceiveFrom(Span<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom(Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : Span<byte> * System.Net.Sockets.SocketFlags * EndPoint -> int
Public Function ReceiveFrom (buffer As Span(Of Byte), socketFlags As SocketFlags, ByRef remoteEP As EndPoint) As Integer
Parámetros
- socketFlags
- SocketFlags
Combinación bit a bit de los SocketFlags valores.
- remoteEP
- EndPoint
Referencia a un EndPoint de tipo del mismo tipo que el punto de conexión del host remoto que se va a actualizar al recibir correctamente.
Devoluciones
Número de bytes recibidos.
Excepciones
remoteEP es null.
Error al intentar acceder al socket.
Se Socket ha cerrado.
Se aplica a
ReceiveFrom(Byte[], SocketFlags, EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Recibe un datagrama en el búfer de datos, mediante el especificado SocketFlagsy almacena el punto de conexión.
public:
int ReceiveFrom(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom(byte[] buffer, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * System.Net.Sockets.SocketFlags * EndPoint -> int
Public Function ReceiveFrom (buffer As Byte(), socketFlags As SocketFlags, ByRef remoteEP As EndPoint) As Integer
Parámetros
- socketFlags
- SocketFlags
Combinación bit a bit de los SocketFlags valores.
- remoteEP
- EndPoint
Referencia a un EndPoint de tipo del mismo tipo que el punto de conexión del host remoto que se va a actualizar al recibir correctamente.
Devoluciones
Número de bytes recibidos.
Excepciones
Error al intentar acceder al socket.
Se Socket ha cerrado.
Un autor de llamada de la pila de llamadas no tiene los permisos necesarios.
Ejemplos
En el ejemplo de código siguiente se recibe un datagrama sin conexión de un host remoto. SocketFlags se pasan al ReceiveFrom método .
public static void ReceiveFrom2()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
// Creates an IpEndPoint to capture the identity of the sending host.
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint senderRemote = (EndPoint)sender;
// Binding is required with ReceiveFrom calls.
s.Bind(endPoint);
byte[] msg = new Byte[256];
Console.WriteLine("Waiting to receive datagrams from client...");
// This call blocks.
s.ReceiveFrom(msg, SocketFlags.None, ref senderRemote);
s.Close();
}
Public Shared Sub ReceiveFrom2()
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
' Creates an IpEndPoint to capture the identity of the sending host.
Dim sender As New IPEndPoint(IPAddress.Any, 0)
Dim senderRemote As EndPoint = CType(sender, EndPoint)
' Binding is required with ReceiveFrom calls.
s.Bind(endPoint)
Dim msg() As Byte = New [Byte](255) {}
Console.WriteLine("Waiting to receive datagrams from client...")
' This call blocks.
s.ReceiveFrom(msg, SocketFlags.None, senderRemote)
s.Close()
End Sub
Comentarios
El ReceiveFrom método lee los datos en el buffer parámetro , devuelve el número de bytes leídos correctamente y captura el punto de conexión del host remoto desde el que se enviaron los datos. Este método es útil si tiene previsto recibir datagramas sin conexión de un host desconocido o varios hosts.
Esta sobrecarga solo requiere que proporcione un búfer de recepción, el necesario SocketFlagsy un EndPoint que represente el host remoto. El desplazamiento tiene como valor predeterminado 0 y el tamaño tiene como valor predeterminado la longitud del parámetro de búfer.
Nota:
Antes de llamar a ReceiveFrom, debe enlazar explícitamente a Socket un punto de conexión local mediante el Bind método . Si no lo hace, ReceiveFrom iniciará una SocketExceptionexcepción .
Con los protocolos sin conexión, ReceiveFrom leerá el primer datagrama en cola recibido en el búfer de red local. Si el datagrama que recibe es mayor que el tamaño de buffer, el ReceiveFrom método se rellenará buffer con la mayor cantidad posible del mensaje y producirá una SocketExceptionexcepción . Si usa un protocolo no confiable, se perderán los datos excesivos. Si usa un protocolo confiable, el proveedor de servicios conservará los datos excesivos y podrá recuperarlos llamando al ReceiveFrom método con un búfer lo suficientemente grande.
Si no hay datos disponibles para la lectura, el ReceiveFrom método se bloqueará hasta que los datos estén disponibles. Si está en modo de no bloqueo y no hay datos disponibles en el búfer de la pila de protocolos, el ReceiveFrom 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 no es cero, vuelva a intentar la operación de recepción.
Aunque ReceiveFrom está pensado para protocolos sin conexión, también puede usar un protocolo orientado a la conexión. Si decide hacerlo, primero debe establecer una conexión de host remoto llamando al Connect método o aceptando una conexión de host remoto entrante llamando al Accept método . Si no establece ni acepta una conexión antes de llamar al ReceiveFrom método , obtendrá un SocketException. También puede establecer un host remoto predeterminado para un protocolo sin conexión antes de llamar al ReceiveFrom método .
Con sockets orientados a la conexión, ReceiveFrom leerá tantos datos como estén disponibles hasta el tamaño de buffer. Si el host remoto cierra la Socket conexión con el Shutdown método y se han recibido todos los datos disponibles, el ReceiveFrom método se completará inmediatamente y devolverá cero bytes.
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:
del AddressFamilyEndPoint objeto utilizado en ReceiveFrom debe coincidir con el AddressFamily de utilizado EndPoint en SendTo.
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.
Consulte también
- Connect(EndPoint)
- Receive(Byte[], Int32, SocketFlags)
- Available
- Shutdown(SocketShutdown)
- Close()
- SocketFlags
Se aplica a
ReceiveFrom(Span<Byte>, SocketFlags, SocketAddress)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Recibe un datagrama en el búfer de datos, mediante el especificado SocketFlagsy almacena el punto de conexión.
public:
int ReceiveFrom(Span<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::SocketAddress ^ receivedAddress);
public int ReceiveFrom(Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.SocketAddress receivedAddress);
member this.ReceiveFrom : Span<byte> * System.Net.Sockets.SocketFlags * System.Net.SocketAddress -> int
Public Function ReceiveFrom (buffer As Span(Of Byte), socketFlags As SocketFlags, receivedAddress As SocketAddress) As Integer
Parámetros
- socketFlags
- SocketFlags
Combinación bit a bit de los SocketFlags valores.
- receivedAddress
- SocketAddress
Instancia SocketAddress que se actualiza con el valor del mismo nivel remoto cuando este método devuelve.
Devoluciones
Número de bytes recibidos.
Excepciones
receivedAddress es null.
Error al intentar acceder al socket.
Se Socket ha cerrado.
Se aplica a
ReceiveFrom(Span<Byte>, EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Recibe un datagrama en el búfer de datos y almacena el punto de conexión.
public:
int ReceiveFrom(Span<System::Byte> buffer, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom(Span<byte> buffer, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : Span<byte> * EndPoint -> int
Public Function ReceiveFrom (buffer As Span(Of Byte), ByRef remoteEP As EndPoint) As Integer
Parámetros
- remoteEP
- EndPoint
Referencia a un EndPoint de tipo del mismo tipo que el punto de conexión del host remoto que se va a actualizar al recibir correctamente.
Devoluciones
Número de bytes recibidos.
Excepciones
remoteEP es null.
Error al intentar acceder al socket.
Se Socket ha cerrado.
Se aplica a
ReceiveFrom(Byte[], EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Recibe un datagrama en el búfer de datos y almacena el punto de conexión.
public:
int ReceiveFrom(cli::array <System::Byte> ^ buffer, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom(byte[] buffer, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * EndPoint -> int
Public Function ReceiveFrom (buffer As Byte(), ByRef remoteEP As EndPoint) As Integer
Parámetros
- remoteEP
- EndPoint
Referencia a un EndPoint de tipo del mismo tipo que el punto de conexión del host remoto que se va a actualizar al recibir correctamente.
Devoluciones
Número de bytes recibidos.
Excepciones
Error al intentar acceder al socket.
Se Socket ha cerrado.
Un autor de llamada de la pila de llamadas no tiene los permisos necesarios.
Ejemplos
En el ejemplo de código siguiente se recibe un datagrama sin conexión de un host remoto.
public static void ReceiveFrom1()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
// Creates an IPEndPoint to capture the identity of the sending host.
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint senderRemote = (EndPoint)sender;
// Binding is required with ReceiveFrom calls.
s.Bind(endPoint);
byte[] msg = new Byte[256];
Console.WriteLine("Waiting to receive datagrams from client...");
// This call blocks.
s.ReceiveFrom(msg, ref senderRemote);
s.Close();
}
Public Shared Sub ReceiveFrom1()
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
' Creates an IPEndPoint to capture the identity of the sending host.
Dim sender As New IPEndPoint(IPAddress.Any, 0)
Dim senderRemote As EndPoint = CType(sender, EndPoint)
' Binding is required with ReceiveFrom calls.
s.Bind(endPoint)
Dim msg() As Byte = New [Byte](255) {}
Console.WriteLine("Waiting to receive datagrams from client...")
' This call blocks.
s.ReceiveFrom(msg, senderRemote)
s.Close()
End Sub
Comentarios
El ReceiveFrom método lee los datos en el buffer parámetro , devuelve el número de bytes leídos correctamente y captura el punto de conexión del host remoto desde el que se enviaron los datos. Este método es útil si tiene previsto recibir datagramas sin conexión de un host desconocido o varios hosts.
Esta sobrecarga solo requiere que proporcione una recepción buffery que EndPoint represente el host remoto. El desplazamiento del búfer tiene como valor predeterminado 0. El tamaño tiene como valor predeterminado la longitud del buffer parámetro y el socketFlags valor predeterminado es None.
Nota:
Antes de llamar a ReceiveFrom, debe enlazar explícitamente a Socket un punto de conexión local mediante el Bind método . Si no lo hace, ReceiveFrom iniciará una SocketExceptionexcepción .
Con los protocolos sin conexión, ReceiveFrom leerá el primer datagrama en cola recibido en el búfer de red local. Si el datagrama que recibe es mayor que el tamaño de buffer, el ReceiveFrom método se rellenará buffer con la mayor cantidad posible del mensaje y producirá una SocketExceptionexcepción . Si usa un protocolo no confiable, se perderán los datos excesivos. Si usa un protocolo confiable, el proveedor de servicios conservará los datos excesivos y podrá recuperarlos llamando al ReceiveFrom método con un búfer lo suficientemente grande.
Si no hay datos disponibles para la lectura, el ReceiveFrom método se bloqueará hasta que los datos estén disponibles. Si está en modo de no bloqueo y no hay datos disponibles en el búfer de la pila de protocolos, el ReceiveFrom 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 no es cero, vuelva a intentar la operación de recepción.
Aunque ReceiveFrom está pensado para protocolos sin conexión, también puede usar un protocolo orientado a la conexión. Si decide hacerlo, primero debe establecer una conexión de host remoto llamando al Connect método o aceptando una conexión de host remoto entrante llamando al Accept método . Si no establece ni acepta una conexión antes de llamar al ReceiveFrom método , obtendrá un SocketException. También puede establecer un host remoto predeterminado para un protocolo sin conexión antes de llamar al ReceiveFrom método .
Con sockets orientados a la conexión, ReceiveFrom leerá tantos datos como estén disponibles hasta el tamaño de buffer. Si el host remoto cierra la Socket conexión con el Shutdown método y se han recibido todos los datos disponibles, el ReceiveFrom método se completará inmediatamente y devolverá cero bytes.
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:
del AddressFamilyEndPoint objeto utilizado en ReceiveFrom debe coincidir con el AddressFamily de utilizado EndPoint en SendTo.
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.