Socket.SendTo 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í.
Envía datos a un punto de conexión específico.
Sobrecargas
| Nombre | Description |
|---|---|
| SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint) |
Envía el número especificado de bytes de datos al punto de conexión especificado, comenzando en la ubicación especificada en el búfer y utilizando el especificado SocketFlags. |
| SendTo(Byte[], Int32, SocketFlags, EndPoint) |
Envía el número especificado de bytes de datos al punto de conexión especificado mediante el especificado SocketFlags. |
| SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress) |
Envía datos a un punto de conexión específico mediante el especificado SocketFlags. |
| SendTo(ReadOnlySpan<Byte>, EndPoint) |
Envía datos al punto de conexión especificado. |
| SendTo(Byte[], SocketFlags, EndPoint) |
Envía datos a un punto de conexión específico mediante el especificado SocketFlags. |
| SendTo(Byte[], EndPoint) |
Envía datos al punto de conexión especificado. |
| SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint) |
Envía datos a un punto de conexión específico mediante el especificado SocketFlags. |
SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía el número especificado de bytes de datos al punto de conexión especificado, comenzando en la ubicación especificada en el búfer y utilizando el especificado SocketFlags.
public:
int SendTo(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * int * int * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, remoteEP As EndPoint) As Integer
Parámetros
- offset
- Int32
Posición en el búfer de datos en el que se van a empezar a enviar datos.
- size
- Int32
Número de bytes que se van a enviar.
- socketFlags
- SocketFlags
Combinación bit a bit de los SocketFlags valores.
Devoluciones
Número de bytes enviados.
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 de buffer menos el valor del offset parámetro.
socketFlags no es una combinación válida de valores.
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 envía un datagrama sin conexión al host remoto especificado. El desplazamiento, el tamaño y SocketFlags se pasan al SendTo método .
public static void SendTo4()
{
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);
byte[] msg = Encoding.ASCII.GetBytes("This is a test");
Console.WriteLine("Sending data.");
// This call blocks.
s.SendTo(msg, 0, msg.Length, SocketFlags.None, endPoint);
s.Close();
}
Public Shared Sub SendTo4()
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)
Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
Console.WriteLine("Sending data.")
' This call blocks.
s.SendTo(msg, 0, msg.Length, SocketFlags.None, endPoint)
s.Close()
End Sub
Comentarios
En esta sobrecarga, si especifica la DontRoute marca como parámetro socketflags , los datos que se envían no se enrutarán.
Si usa un protocolo sin conexión, no es necesario establecer un host remoto predeterminado con el Connect método antes de llamar SendToa . Solo tiene que hacerlo si piensa llamar al Send método . Si llama al Connect método antes de llamar SendToa , el remoteEP parámetro invalidará el host remoto predeterminado especificado solo para esa operación de envío. Tampoco es necesario llamar al Bind método , ya que el proveedor de servicios subyacente asignará la dirección de red local y el número de puerto más adecuados. Si necesita identificar la dirección de red local asignada y el número de puerto, puede usar la LocalEndPoint propiedad una vez completado correctamente el SendTo método.
Aunque está pensado para protocolos sin conexión, SendTo también funciona con protocolos orientados a la conexión. Si usa un protocolo orientado a la conexión, primero debe establecer una conexión de host remoto llamando al Connect método o aceptando una solicitud de conexión entrante mediante el Accept método . Si no establece o acepta una conexión de host remota, SendTo producirá una SocketExceptionexcepción . También puede establecer un host remoto predeterminado para un protocolo sin conexión antes de llamar al SendTo método . En cualquiera de estos casos, SendTo omitirá el remoteEP parámetro y solo enviará datos al host remoto conectado o predeterminado.
Los sockets de bloqueo se bloquearán hasta que se envíe el número solicitado de bytes. Dado que un no bloqueo Socket se completa inmediatamente, es posible que no envíe todos los bytes solicitados en una sola operación. Es responsabilidad de las aplicaciones realizar un seguimiento del número de bytes enviados y volver a intentar la operación hasta que la aplicación envíe el número de bytes solicitado. Tampoco hay ninguna garantía de que los datos que envíe aparecerán en la red inmediatamente. Para aumentar la eficiencia de la red, el sistema subyacente puede retrasar la transmisión hasta que se recopile una cantidad significativa de datos de salida. Una finalización correcta del SendTo método significa que el sistema subyacente ha tenido espacio para almacenar en búfer los datos de un envío de red.
Si usa un protocolo sin conexión en modo de bloqueo, SendTo se bloqueará hasta que se envíe el datagrama. Si desea enviar datos a una dirección de difusión, primero debe llamar al SetSocketOption método y establecer la opción de socket en SocketOptionName.Broadcast. También debe asegurarse de que el tamaño no supere el tamaño máximo del paquete del proveedor de servicios subyacente. Si lo hace, el datagrama no se enviará y SendTo producirá una SocketExceptionexcepció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.
Consulte también
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Se aplica a
SendTo(Byte[], Int32, SocketFlags, EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía el número especificado de bytes de datos al punto de conexión especificado mediante el especificado SocketFlags.
public:
int SendTo(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo(byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * int * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), size As Integer, socketFlags As SocketFlags, remoteEP As EndPoint) As Integer
Parámetros
- size
- Int32
Número de bytes que se van a enviar.
- socketFlags
- SocketFlags
Combinación bit a bit de los SocketFlags valores.
Devoluciones
Número de bytes enviados.
Excepciones
El especificado size supera el tamaño de buffer.
Error al intentar acceder al socket.
Se Socket ha cerrado.
Ejemplos
En el ejemplo de código siguiente se envía un datagrama sin conexión al host remoto especificado. El tamaño y SocketFlags se pasan al SendTo método .
public static void SendTo3()
{
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);
byte[] msg = Encoding.ASCII.GetBytes("This is a test");
Console.WriteLine("Sending data.");
// This call blocks.
s.SendTo(msg, msg.Length, SocketFlags.None, endPoint);
s.Close();
}
Public Shared Sub SendTo3()
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)
Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
Console.WriteLine("Sending data.")
' This call blocks.
s.SendTo(msg, msg.Length, SocketFlags.None, endPoint)
s.Close()
End Sub
Comentarios
En esta sobrecarga, el desplazamiento del búfer tiene como valor predeterminado 0. Si especifica la DontRoute marca como parámetro socketflags , los datos que se envían no se enrutarán.
Si usa un protocolo sin conexión, no es necesario establecer un host remoto predeterminado con el Connect método antes de llamar SendToa . Solo tiene que hacerlo si piensa llamar al Send método . Si llama al Connect método antes de llamar SendToa , el remoteEP parámetro invalidará el host remoto predeterminado especificado solo para esa operación de envío. Tampoco es necesario llamar al Bind método , ya que el proveedor de servicios subyacente asignará la dirección de red local y el número de puerto más adecuados. Si necesita identificar la dirección de red local asignada y el número de puerto, puede usar la LocalEndPoint propiedad una vez completado correctamente el SendTo método.
Aunque está pensado para protocolos sin conexión, SendTo también funciona con protocolos orientados a la conexión. Si usa un protocolo orientado a la conexión, primero debe establecer una conexión de host remoto llamando al Connect método o aceptando una solicitud de conexión entrante mediante el Accept método . Si no establece o acepta una conexión de host remota, SendTo producirá una SocketExceptionexcepción . También puede establecer un host remoto predeterminado para un protocolo sin conexión antes de llamar al SendTo método . En cualquiera de estos casos, SendTo omitirá el remoteEP parámetro y solo enviará datos al host remoto conectado o predeterminado.
Los sockets de bloqueo se bloquearán hasta que se envíe el número solicitado de bytes. Dado que un bloqueo no se Socket completa inmediatamente, es posible que no envíe todos los bytes solicitados en una sola operación. Es responsabilidad de la aplicación realizar un seguimiento del número de bytes enviados y volver a intentar la operación hasta que la aplicación envíe el número de bytes solicitado. Tampoco hay ninguna garantía de que los datos que envíe aparecerán en la red inmediatamente. Para aumentar la eficiencia de la red, el sistema subyacente puede retrasar la transmisión hasta que se recopile una cantidad significativa de datos de salida. Una finalización correcta del SendTo método significa que el sistema subyacente ha tenido espacio para almacenar en búfer los datos de un envío de red.
Si usa un protocolo sin conexión en modo de bloqueo, SendTo se bloqueará hasta que se envíe el datagrama. Si desea enviar datos a una dirección de difusión, primero debe llamar al SetSocketOption método y establecer la opción de socket en SocketOptionName.Broadcast. También debe asegurarse de que el número de bytes enviados no supera el tamaño máximo del paquete del proveedor de servicios subyacente. Si lo hace, el datagrama no se enviará y SendTo producirá una SocketExceptionexcepció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.
Consulte también
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Se aplica a
SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía datos a un punto de conexión específico mediante el especificado SocketFlags.
public:
int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::SocketAddress ^ socketAddress);
public int SendTo(ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.SocketAddress socketAddress);
member this.SendTo : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * System.Net.SocketAddress -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, socketAddress As SocketAddress) As Integer
Parámetros
- buffer
- ReadOnlySpan<Byte>
Intervalo de bytes que contiene los datos que se van a enviar.
- socketFlags
- SocketFlags
Combinación bit a bit de los SocketFlags valores que se usarán al enviar los datos.
- socketAddress
- SocketAddress
SocketAddress que representa el destino de los datos.
Devoluciones
Número de bytes enviados.
Excepciones
socketAddress es null.
Error al intentar acceder al socket.
Se Socket ha cerrado.
Se aplica a
SendTo(ReadOnlySpan<Byte>, EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía datos al punto de conexión especificado.
public:
int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::EndPoint ^ remoteEP);
public int SendTo(ReadOnlySpan<byte> buffer, System.Net.EndPoint remoteEP);
member this.SendTo : ReadOnlySpan<byte> * System.Net.EndPoint -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), remoteEP As EndPoint) As Integer
Parámetros
- buffer
- ReadOnlySpan<Byte>
Intervalo de bytes que contiene los datos que se van a enviar.
Devoluciones
Número de bytes enviados.
Excepciones
remoteEP es null.
Error al intentar acceder al socket.
Se Socket ha cerrado.
Se aplica a
SendTo(Byte[], SocketFlags, EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía datos a un punto de conexión específico mediante el especificado SocketFlags.
public:
int SendTo(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo(byte[] buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), socketFlags As SocketFlags, remoteEP As EndPoint) As Integer
Parámetros
- socketFlags
- SocketFlags
Combinación bit a bit de los SocketFlags valores.
Devoluciones
Número de bytes enviados.
Excepciones
Error al intentar acceder al socket.
Se Socket ha cerrado.
Ejemplos
En el ejemplo de código siguiente se envía un datagrama sin conexión al host remoto especificado. SocketFlags se pasan al SendTo método .
public static void SendTo2()
{
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);
byte[] msg = Encoding.ASCII.GetBytes("This is a test");
Console.WriteLine("Sending data.");
// This call blocks.
s.SendTo(msg, SocketFlags.None, endPoint);
s.Close();
}
Public Shared Sub SendTo2()
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)
Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
Console.WriteLine("Sending data.")
' This call blocks.
s.SendTo(msg, SocketFlags.None, endPoint)
s.Close()
End Sub
Comentarios
En esta sobrecarga, el desplazamiento del búfer tiene como valor predeterminado 0 y el número de bytes para enviar valores predeterminados al tamaño de buffer. Si especifica la DontRoute marca como parámetro socketflags , los datos que se envían no se enrutarán.
Si usa un protocolo sin conexión, no es necesario establecer un host remoto predeterminado con el Connect método antes de llamar SendToa . Solo tiene que hacerlo si piensa llamar al Send método . Si llama al Connect método antes de llamar SendToa , el remoteEP parámetro invalidará el host remoto predeterminado especificado solo para esa operación de envío. Tampoco es necesario llamar al Bind método , ya que el proveedor de servicios subyacente asignará la dirección de red local y el número de puerto más adecuados. Si necesita identificar la dirección de red local asignada y el número de puerto, puede usar la LocalEndPoint propiedad una vez completado correctamente el SendTo método.
Aunque está pensado para protocolos sin conexión, SendTo también funciona con protocolos orientados a la conexión. Si usa un protocolo orientado a la conexión, primero debe establecer una conexión de host remoto llamando al Connect método o aceptando una solicitud de conexión entrante mediante el Accept método . Si no establece o acepta una conexión de host remota, SendTo producirá una SocketExceptionexcepción . También puede establecer un host remoto predeterminado para un protocolo sin conexión antes de llamar al SendTo método . En cualquiera de estos casos, SendTo omitirá el remoteEP parámetro y solo enviará datos al host remoto conectado o predeterminado.
Los sockets de bloqueo se bloquearán hasta que se envíen todos los bytes solicitados.buffer Dado que un bloqueo no se Socket completa inmediatamente, es posible que no envíe todos los bytes en buffer. Es responsabilidad de la aplicación realizar un seguimiento del número de bytes enviados y volver a intentar la operación hasta que la aplicación envíe todos los bytes de buffer. Tampoco hay ninguna garantía de que los datos que envíe aparecerán en la red inmediatamente. Para aumentar la eficiencia de la red, el sistema subyacente puede retrasar la transmisión hasta que se recopile una cantidad significativa de datos de salida. Una finalización correcta del SendTo método significa que el sistema subyacente ha tenido espacio para almacenar en búfer los datos de un envío de red.
Si usa un protocolo sin conexión en modo de bloqueo, SendTo se bloqueará hasta que se envíe el datagrama. Si desea enviar datos a una dirección de difusión, primero debe llamar al SetSocketOption método y establecer la opción de socket en SocketOptionName.Broadcast. También debe asegurarse de que el número de bytes enviados no supera el tamaño máximo del paquete del proveedor de servicios subyacente. Si lo hace, el datagrama no se enviará y SendTo producirá una SocketExceptionexcepció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.
Consulte también
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Se aplica a
SendTo(Byte[], EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía datos al punto de conexión especificado.
public:
int SendTo(cli::array <System::Byte> ^ buffer, System::Net::EndPoint ^ remoteEP);
public int SendTo(byte[] buffer, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), remoteEP As EndPoint) As Integer
Parámetros
Devoluciones
Número de bytes enviados.
Excepciones
Error al intentar acceder al socket.
Se Socket ha cerrado.
Ejemplos
En el ejemplo de código siguiente se envía un datagrama sin conexión al host remoto especificado.
public static void SendTo1()
{
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);
byte[] msg = Encoding.ASCII.GetBytes("This is a test");
Console.WriteLine("Sending data.");
// This call blocks.
s.SendTo(msg, endPoint);
s.Close();
}
Public Shared Sub SendTo1()
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)
Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
Console.WriteLine("Sending data.")
' This call blocks.
s.SendTo(msg, endPoint)
s.Close()
End Sub
Comentarios
En esta sobrecarga, el desplazamiento del búfer tiene como valor predeterminado 0, el número de bytes para enviar valores predeterminados al tamaño del buffer parámetro y el SocketFlags valor predeterminado es 0.
Si usa un protocolo sin conexión, no es necesario establecer un host remoto predeterminado con el Connect método antes de llamar SendToa . Solo tiene que hacerlo si piensa llamar al Send método . Si llama al Connect método antes de llamar SendToa , el remoteEP parámetro invalidará el host remoto predeterminado especificado solo para esa operación de envío. Tampoco es necesario llamar al Bind método , ya que el proveedor de servicios subyacente asignará la dirección de red local y el número de puerto más adecuados. Si necesita identificar la dirección de red local asignada y el número de puerto, puede usar la LocalEndPoint propiedad una vez completado correctamente el SendTo método.
Aunque está pensado para protocolos sin conexión, SendTo también funciona con protocolos orientados a la conexión. Si usa un protocolo orientado a la conexión, primero debe establecer una conexión de host remoto llamando al Connect método o aceptando una solicitud de conexión entrante mediante el Accept método . Si no establece o acepta una conexión de host remota, SendTo producirá una SocketExceptionexcepción . También puede establecer un host remoto predeterminado para un protocolo sin conexión antes de llamar al SendTo método . En cualquiera de estos casos, SendTo omitirá el remoteEP parámetro y solo enviará datos al host remoto conectado o predeterminado.
Los sockets de bloqueo se bloquearán hasta que se envíen todos los bytes del búfer. Dado que un bloqueo no se Socket completa inmediatamente, es posible que no envíe todos los bytes en buffer. Es responsabilidad de la aplicación realizar un seguimiento del número de bytes enviados y volver a intentar la operación hasta que la aplicación envíe todos los bytes de buffer. Tampoco hay ninguna garantía de que los datos que envíe aparecerán en la red inmediatamente. Para aumentar la eficacia de la red, el sistema subyacente puede retrasar la transmisión hasta que se recopile una cantidad significativa de datos salientes. Una finalización correcta del SendTo método significa que el sistema subyacente ha tenido espacio para almacenar en búfer los datos de un envío de red.
Si usa un protocolo sin conexión en modo de bloqueo, SendTo se bloqueará hasta que se envíe el datagrama. Si desea enviar datos a una dirección de difusión, primero debe llamar al SetSocketOption método y establecer la opción de socket en SocketOptionName.Broadcast. También debe asegurarse de que el número de bytes enviados no supera el tamaño máximo del paquete del proveedor de servicios subyacente. Si lo hace, el datagrama no se enviará y SendTo producirá una SocketExceptionexcepció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.
Consulte también
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Se aplica a
SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía datos a un punto de conexión específico mediante el especificado SocketFlags.
public:
int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo(ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint) As Integer
Parámetros
- buffer
- ReadOnlySpan<Byte>
Intervalo de bytes que contiene los datos que se van a enviar.
- socketFlags
- SocketFlags
Combinación bit a bit de los SocketFlags valores.
Devoluciones
Número de bytes enviados.
Excepciones
remoteEP es null.
Error al intentar acceder al socket.
Se Socket ha cerrado.