Socket.SendTo Método

Definición

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

buffer
Byte[]

Matriz de tipo Byte que contiene los datos que se van a enviar.

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.

remoteEP
EndPoint

EndPoint que representa la ubicación de destino de los datos.

Devoluciones

Número de bytes enviados.

Excepciones

buffer es null.

O bien

remoteEP 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

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 el socketflags parámetro , 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 apropiados. Si necesita identificar la dirección de red local asignada y el número de puerto, puede usar la LocalEndPoint propiedad después de que el SendTo método se complete correctamente.

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 remota, 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 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 es así, 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 cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, vea Seguimiento de red en .NET Framework.

Consulte también

Se aplica a

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

buffer
Byte[]

Matriz de tipo Byte que contiene los datos que se van a enviar.

size
Int32

Número de bytes para enviar.

socketFlags
SocketFlags

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

remoteEP
EndPoint

EndPoint que representa la ubicación de destino de los datos.

Devoluciones

Número de bytes enviados.

Excepciones

buffer es null.

O bien

remoteEP es null.

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 parámetro socketflags , 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 apropiados. Si necesita identificar la dirección de red local asignada y el número de puerto, puede usar la LocalEndPoint propiedad después de que el SendTo método se complete correctamente.

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 remota, 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 no 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 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 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

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.

remoteEP
EndPoint

EndPoint que representa el destino de los datos.

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

buffer
Byte[]

Matriz de tipo Byte que contiene los datos que se van a enviar.

socketFlags
SocketFlags

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

remoteEP
EndPoint

EndPoint que representa la ubicación de destino de los datos.

Devoluciones

Número de bytes enviados.

Excepciones

buffer es null.

O bien

remoteEP es null.

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

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

buffer
Byte[]

Matriz de tipo Byte que contiene los datos que se van a enviar.

remoteEP
EndPoint

EndPoint que representa el destino de los datos.

Devoluciones

Número de bytes enviados.

Excepciones

buffer es null.

O bien

remoteEP es null.

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

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.

remoteEP
EndPoint

EndPoint que representa el destino de los datos.

Devoluciones

Número de bytes enviados.

Excepciones

remoteEP es null.

Error al intentar acceder al socket.

El Socket se ha cerrado.

Se aplica a