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 extremo específico.
Sobrecargas
SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint) |
Envía el número especificado de bytes de datos al extremo especificado, comenzando en la ubicación especificada del búfer y usando los SocketFlags especificados. |
SendTo(Byte[], Int32, SocketFlags, EndPoint) |
Envía el número especificado de bytes de datos al extremo especificado usando los SocketFlags especificados. |
SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress) |
Envía datos a un extremo específico mediante el marcador SocketFlags especificado. |
SendTo(ReadOnlySpan<Byte>, EndPoint) |
Envía los datos al extremo especificado. |
SendTo(Byte[], SocketFlags, EndPoint) |
Envía datos a un extremo específico mediante el marcador SocketFlags especificado. |
SendTo(Byte[], EndPoint) |
Envía los datos al extremo especificado. |
SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint) |
Envía datos a un extremo específico mediante el marcador SocketFlags especificado. |
SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía el número especificado de bytes de datos al extremo especificado, comenzando en la ubicación especificada del búfer y usando los SocketFlags especificados.
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 donde comienza el envío de datos.
- size
- Int32
Número de bytes para enviar.
- socketFlags
- SocketFlags
Combinación bit a bit de los valores de SocketFlags.
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 parámetro offset
.
socketFlags
no es una combinación válida de valores.
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 envía un datagrama sin conexión al host remoto especificado. El desplazamiento, el tamaño y SocketFlags se pasan al SendTo método .
static void SendTo4()
{
IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );
Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
SocketType::Dgram,
ProtocolType::Udp );
array<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 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 socketflags
parámetro, los datos que envía 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 remota 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 remoto, SendTo iniciará 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 reintentar la operación hasta que la aplicación envíe el número solicitado de bytes. 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 supera el tamaño máximo del paquete del proveedor de servicios subyacente. Si lo hace, el datagrama no se enviará y SendTo generará un SocketException.
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)
- 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
Envía el número especificado de bytes de datos al extremo especificado usando los SocketFlags especificados.
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 para enviar.
- socketFlags
- SocketFlags
Combinación bit a bit de los valores de SocketFlags.
Devoluciones
Número de bytes enviados.
Excepciones
El parámetro size
especificado sobrepasa el tamaño de buffer
.
Error al intentar acceder al socket.
El Socket se 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 .
static void SendTo3()
{
IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );
Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
SocketType::Dgram,
ProtocolType::Udp );
array<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 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 socketflags
parámetro , los datos que va a enviar 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 remota 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 remoto, SendTo iniciará 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 Socket se 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 reintentar la operación hasta que la aplicación envíe el número solicitado de bytes. 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 de paquete del proveedor de servicios subyacente. Si lo hace, el datagrama no se enviará y SendTo generará un SocketException.
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)
- 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
Envía datos a un extremo específico mediante el marcador SocketFlags especificado.
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.
El Socket se ha cerrado.
Se aplica a
SendTo(ReadOnlySpan<Byte>, EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía los datos al extremo 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.
El Socket se ha cerrado.
Se aplica a
SendTo(Byte[], SocketFlags, EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía datos a un extremo específico mediante el marcador SocketFlags especificado.
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 valores de SocketFlags.
Devoluciones
Número de bytes enviados.
Excepciones
Error al intentar acceder al socket.
El Socket se 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 .
static void SendTo2()
{
IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );
Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
SocketType::Dgram,
ProtocolType::Udp );
array<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 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 socketflags
parámetro , los datos que va a enviar 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 remota 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 remoto, SendTo iniciará 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 Socket se completa inmediatamente, es posible que no envíe todos los bytes de .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 de paquete del proveedor de servicios subyacente. Si lo hace, el datagrama no se enviará y SendTo generará un SocketException.
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)
- 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
Envía los datos al extremo 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.
El Socket se ha cerrado.
Ejemplos
En el ejemplo de código siguiente se envía un datagrama sin conexión al host remoto especificado.
static void SendTo1()
{
IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );
Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
SocketType::Dgram,
ProtocolType::Udp );
array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
Console::WriteLine( "Sending data." );
// This call blocks.
s->SendTo( msg, endPoint );
s->Close();
}
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 remota 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 remoto, SendTo iniciará 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 Socket se completa inmediatamente, es posible que no envíe todos los bytes de .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 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 de paquete del proveedor de servicios subyacente. Si lo hace, el datagrama no se enviará y SendTo generará un SocketException.
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)
- 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
Envía datos a un extremo específico mediante el marcador SocketFlags especificado.
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 valores de SocketFlags.
Devoluciones
Número de bytes enviados.
Excepciones
remoteEP
es null
.
Error al intentar acceder al socket.
El Socket se ha cerrado.