Socket.Send Socket.Send Socket.Send Socket.Send Method

Definición

Envía datos a un objeto Socket conectado.Sends data to a connected Socket.

Sobrecargas

Send(Byte[]) Send(Byte[]) Send(Byte[]) Send(Byte[])

Envía datos a un objeto Socket conectado.Sends data to a connected Socket.

Send(IList<ArraySegment<Byte>>) Send(IList<ArraySegment<Byte>>) Send(IList<ArraySegment<Byte>>) Send(IList<ArraySegment<Byte>>)

Envía el conjunto de búferes de la lista a un Socket conectado.Sends the set of buffers in the list to a connected Socket.

Send(ReadOnlySpan<Byte>) Send(ReadOnlySpan<Byte>) Send(ReadOnlySpan<Byte>) Send(ReadOnlySpan<Byte>)
Send(Byte[], SocketFlags) Send(Byte[], SocketFlags) Send(Byte[], SocketFlags)

Envía datos a un objeto Socket conectado mediante el marcador SocketFlags especificado.Sends data to a connected Socket using the specified SocketFlags.

Send(IList<ArraySegment<Byte>>, SocketFlags) Send(IList<ArraySegment<Byte>>, SocketFlags) Send(IList<ArraySegment<Byte>>, SocketFlags)

Envía el conjunto de búferes de la lista a un Socket conectado, utilizando el SocketFlags especificado.Sends the set of buffers in the list to a connected Socket, using the specified SocketFlags.

Send(ReadOnlySpan<Byte>, SocketFlags) Send(ReadOnlySpan<Byte>, SocketFlags) Send(ReadOnlySpan<Byte>, SocketFlags)
Send(Byte[], Int32, SocketFlags) Send(Byte[], Int32, SocketFlags) Send(Byte[], Int32, SocketFlags)

Envía el número especificado de bytes de datos a un objeto Socket conectado, usando el marcador SocketFlags especificado.Sends the specified number of bytes of data to a connected Socket, using the specified SocketFlags.

Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError) Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError) Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

Envía el conjunto de búferes de la lista a un Socket conectado, utilizando el SocketFlags especificado.Sends the set of buffers in the list to a connected Socket, using the specified SocketFlags.

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError) Send(ReadOnlySpan<Byte>, SocketFlags, SocketError) Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)
Send(Byte[], Int32, Int32, SocketFlags) Send(Byte[], Int32, Int32, SocketFlags) Send(Byte[], Int32, Int32, SocketFlags)

Envía el número especificado de bytes de datos a un Socket conectado, comenzando en el desplazamiento especificado y usando el SocketFlags especificado.Sends the specified number of bytes of data to a connected Socket, starting at the specified offset, and using the specified SocketFlags.

Send(Byte[], Int32, Int32, SocketFlags, SocketError) Send(Byte[], Int32, Int32, SocketFlags, SocketError) Send(Byte[], Int32, Int32, SocketFlags, SocketError)

Envía el número especificado de bytes de datos a un objeto Socket conectado, a partir de la posición de desplazamiento especificada y usando el valor de SocketFlags especificado.Sends the specified number of bytes of data to a connected Socket, starting at the specified offset, and using the specified SocketFlags

Send(Byte[]) Send(Byte[]) Send(Byte[]) Send(Byte[])

Envía datos a un objeto Socket conectado.Sends data to a connected Socket.

public:
 int Send(cli::array <System::Byte> ^ buffer);
public int Send (byte[] buffer);
member this.Send : byte[] -> int
Public Function Send (buffer As Byte()) As Integer

Parámetros

buffer
Byte[]

Matriz de tipo Byte que contiene los datos que se van a enviar.An array of type Byte that contains the data to be sent.

Devoluciones

Número de bytes enviados a Socket.The number of bytes sent to the Socket.

Excepciones

Error al intentar acceder al socket.An error occurred when attempting to access the socket.

Ejemplos

En el ejemplo de código siguiente se muestra el envío de datos en un conectado Socket.The following code example demonstrates sending data on a connected Socket.

// Displays sending with a connected socket
// using the overload that takes a buffer.
int SendReceiveTest1( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return ( e->ErrorCode );
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer.
public static int SendReceiveTest1(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try 
    {
        // Blocks until send returns.
        int i = server.Send(msg);
        Console.WriteLine("Sent {0} bytes.", i);
        
        // Get reply from the server.
        i = server.Receive(bytes);
        Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer.
Public Shared Function SendReceiveTest1(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim i As Integer = server.Send(msg)
        Console.WriteLine("Sent {0} bytes.", i)
        
        ' Get reply from the server.
        i = server.Receive(bytes)
        Console.WriteLine(Encoding.UTF8.GetString(bytes))
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest1

Comentarios

Send envía datos de forma sincrónica al host remoto especificado en el Connect o Accept método y devuelve el número de bytes enviado correctamente.Send synchronously sends data to the remote host specified in the Connect or Accept method and returns the number of bytes successfully sent. Send puede usarse para protocolos orientados a conexiones y sin conexión.Send can be used for both connection-oriented and connectionless protocols.

Esta sobrecarga requiere un búfer que contiene los datos que desea enviar.This overload requires a buffer that contains the data you want to send. El SocketFlags valor predeterminado es 0, el desplazamiento de búfer predeterminado es 0 y el número de bytes que se envían los valores predeterminados para el tamaño del búfer.The SocketFlags value defaults to 0, the buffer offset defaults to 0, and the number of bytes to send defaults to the size of the buffer.

Si usa un protocolo sin conexión, debe llamar a Connect antes de llamar a este método, o Send producirá un SocketException.If you are using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Si utiliza un protocolo orientado a conexiones, debe usar Connect para establecer una conexión de host remoto, o use Accept para aceptar una conexión entrante.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Si usa un protocolo sin conexión y un plan para enviar datos a varios hosts diferentes, debe usar el SendTo método.If you are using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Si no usa el SendTo método, tendrá que llamar Connect antes de cada llamada a Send.If you do not use the SendTo method, you will have to call Connect before each call to Send. Puede usar SendTo incluso después de haber establecido un host remoto predeterminado mediante Connect.You can use SendTo even after you have established a default remote host with Connect. También puede cambiar el host remoto predeterminado antes de llamar a Send mediante otra llamada a Connect.You can also change the default remote host prior to calling Send by making another call to Connect.

Si usa un protocolo orientado a conexiones, Send se bloqueará hasta que se envían todos los bytes del búfer, a menos que se haya establecido un tiempo de espera mediante Socket.SendTimeout.If you are using a connection-oriented protocol, Send will block until all of the bytes in the buffer are sent, unless a time-out was set by using Socket.SendTimeout. Si se ha superado el valor de tiempo de espera, el Send llamada producirá un SocketException.If the time-out value was exceeded, the Send call will throw a SocketException. En el modo de no bloqueo, Send puede completarse correctamente incluso si envía a menor que el número de bytes en el búfer.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes in the buffer. Es responsabilidad de la aplicación para mantener el seguimiento del número de bytes enviados y vuelva a intentar la operación hasta que la aplicación envía los bytes del búfer.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the bytes in the buffer. No hay ninguna garantía de que los datos que envíe aparecerán en la red inmediatamente.There is also no guarantee that the data you send will appear on the network immediately. Para aumentar la eficacia de la red, el sistema subyacente podría retrasar la transmisión hasta que se recopila una cantidad significativa de datos salientes.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. La finalización correcta de la Send método significa que el sistema subyacente disponía de suficiente espacio en búfer los datos de una red de envío.A successful completion of the Send method means that the underlying system has had room to buffer your data for a network send.

Nota

Si recibe un SocketException, utilice el SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de haber obtenido este código, consulte el código de error de API de la versión 2 de Windows Sockets documentación para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

La finalización correcta de un envío no indica que los datos se ha entregado correctamente.The successful completion of a send does not indicate that the data was successfully delivered. Si no hay espacio de búfer disponible dentro del sistema de transporte para contener los datos que se transmitan, envío bloqueará a menos que el socket se ha colocado en el modo de no bloqueo.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en .NET Framework.For more information, see Network Tracing in the .NET Framework.

Consulte también:

Send(IList<ArraySegment<Byte>>) Send(IList<ArraySegment<Byte>>) Send(IList<ArraySegment<Byte>>) Send(IList<ArraySegment<Byte>>)

Envía el conjunto de búferes de la lista a un Socket conectado.Sends the set of buffers in the list to a connected Socket.

public:
 int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public int Send (System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> -> int
Public Function Send (buffers As IList(Of ArraySegment(Of Byte))) As Integer

Parámetros

buffers
IList<ArraySegment<Byte>>

Lista de objetos ArraySegment<T> de tipo Byte que contiene los datos que se han de enviar.A list of ArraySegment<T>s of type Byte that contains the data to be sent.

Devoluciones

Número de bytes enviados a Socket.The number of bytes sent to the Socket.

Excepciones

Error al intentar acceder al socket.An error occurred when attempting to access the socket. Vea la sección de comentarios que figura más abajo.See remarks section below.

Comentarios

Send puede usarse para protocolos orientados a conexiones y sin conexión.Send can be used for both connection-oriented and connectionless protocols.

Esta sobrecarga requiere al menos un búfer que contiene los datos que desea enviar.This overload requires at least one buffer that contains the data you want to send.

Si usa un protocolo sin conexión, debe llamar a Connect antes de llamar a este método, o Send producirá un SocketException.If you are using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Si utiliza un protocolo orientado a conexiones, debe usar Connect para establecer una conexión de host remoto, o use Accept para aceptar una conexión entrante.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Si usa un protocolo sin conexión y un plan para enviar datos a varios hosts diferentes, debe usar el SendTo método.If you are using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Si no usa el SendTo método, tendrá que llamar Connect antes de cada llamada a Send.If you do not use the SendTo method, you will have to call Connect before each call to Send. Puede usar SendTo incluso después de haber establecido un host remoto predeterminado mediante Connect.You can use SendTo even after you have established a default remote host with Connect. También puede cambiar el host remoto predeterminado antes de llamar a Send mediante otra llamada a Connect.You can also change the default remote host prior to calling Send by making another call to Connect.

Si usa un protocolo orientado a conexiones, Send se bloqueará hasta que se envían todos los bytes del búfer, a menos que se haya establecido un tiempo de espera mediante Socket.SendTimeout.If you are using a connection-oriented protocol, Send will block until all of the bytes in the buffer are sent, unless a time-out was set by using Socket.SendTimeout. Si se ha superado el valor de tiempo de espera, el Send llamada producirá un SocketException.If the time-out value was exceeded, the Send call will throw a SocketException. En el modo de no bloqueo, Send puede completarse correctamente incluso si envía a menor que el número de bytes en el búfer.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes in the buffer. Es responsabilidad de la aplicación para mantener el seguimiento del número de bytes enviados y vuelva a intentar la operación hasta que la aplicación envía los bytes del búfer.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the bytes in the buffer. No hay ninguna garantía de que los datos que envíe aparecerán en la red inmediatamente.There is also no guarantee that the data you send will appear on the network immediately. Para aumentar la eficacia de la red, el sistema subyacente podría retrasar la transmisión hasta que se recopila una cantidad significativa de datos salientes.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. La finalización correcta de la Send método significa que el sistema subyacente disponía de suficiente espacio en búfer los datos de una red de envío.A successful completion of the Send method means that the underlying system has had room to buffer your data for a network send.

Nota

Si recibe un SocketException, utilice el SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de haber obtenido este código, consulte el código de error de API de la versión 2 de Windows Sockets documentación para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

La finalización correcta de un envío no indica que los datos se ha entregado correctamente.The successful completion of a send does not indicate that the data was successfully delivered. Si no hay espacio de búfer disponible dentro del sistema de transporte para contener los datos que se transmitan, envío bloqueará a menos que el socket se ha colocado en el modo de no bloqueo.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en .NET Framework.For more information, see Network Tracing in the .NET Framework.

Send(ReadOnlySpan<Byte>) Send(ReadOnlySpan<Byte>) Send(ReadOnlySpan<Byte>) Send(ReadOnlySpan<Byte>)

public:
 int Send(ReadOnlySpan<System::Byte> buffer);
public int Send (ReadOnlySpan<byte> buffer);
member this.Send : ReadOnlySpan<byte> -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte)) As Integer

Parámetros

buffer
ReadOnlySpan<Byte>

Devoluciones

Send(Byte[], SocketFlags) Send(Byte[], SocketFlags) Send(Byte[], SocketFlags)

Envía datos a un objeto Socket conectado mediante el marcador SocketFlags especificado.Sends data to a connected Socket using the specified SocketFlags.

public:
 int Send(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Send (byte[] buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : byte[] * System.Net.Sockets.SocketFlags -> int

Parámetros

buffer
Byte[]

Matriz de tipo Byte que contiene los datos que se van a enviar.An array of type Byte that contains the data to be sent.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

Combinación bit a bit de los valores de SocketFlags.A bitwise combination of the SocketFlags values.

Devoluciones

Número de bytes enviados a Socket.The number of bytes sent to the Socket.

Excepciones

Error al intentar acceder al socket.An error occurred when attempting to access the socket.

Ejemplos

En el ejemplo de código siguiente se muestra el envío de datos en un conectado Socket.The following code example demonstrates sending data on a connected Socket.

// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
int SendReceiveTest2( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
public static int SendReceiveTest2(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try 
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);
        
        // Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None);
        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer and socket flags.
Public Shared Function SendReceiveTest2(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None)
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest2

Comentarios

Send envía datos de forma sincrónica al host remoto establecido en el Connect o Accept método y devuelve el número de bytes enviado correctamente.Send synchronously sends data to the remote host established in the Connect or Accept method and returns the number of bytes successfully sent. El Send método puede utilizarse para protocolos orientados a conexiones y sin conexión.The Send method can be used for both connection-oriented and connectionless protocols.

Esta sobrecarga requiere un búfer que contiene los datos que desea enviar y una combinación bit a bit de SocketFlags.This overload requires a buffer that contains the data you want to send and a bitwise combination of SocketFlags. El desplazamiento de búfer predeterminado es 0 y el número de bytes que se envían los valores predeterminados para el tamaño del búfer.The buffer offset defaults to 0, and the number of bytes to send defaults to the size of the buffer. Si especifica la DontRoute marca como el socketflags valor del parámetro, los datos que se envía no se enrutarán.If you specify the DontRoute flag as the socketflags parameter value, the data you are sending will not be routed.

Si usa un protocolo sin conexión, debe llamar a Connect antes de llamar a este método, o Send producirá un SocketException.If you are using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Si utiliza un protocolo orientado a conexiones, debe usar Connect para establecer una conexión de host remoto, o use Accept para aceptar una conexión entrante.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Si usa un protocolo sin conexión y un plan para enviar datos a varios hosts diferentes, debe usar el SendTo método.If you are using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Si no usa el SendTo método, tendrá que llamar el Connect método antes de cada llamada a Send.If you do not use the SendTo method, you will have to call the Connect method before each call to Send. Puede usar SendTo incluso después de haber establecido un host remoto predeterminado mediante Connect.You can use SendTo even after you have established a default remote host with Connect. También puede cambiar el host remoto predeterminado antes de llamar a Send mediante otra llamada a Connect.You can also change the default remote host prior to calling Send by making another call to Connect.

Si usa un protocolo orientado a conexiones, Send se bloqueará hasta que se envían todos los bytes del búfer, a menos que se haya establecido un tiempo de espera mediante Socket.SendTimeout.If you are using a connection-oriented protocol, Send will block until all of the bytes in the buffer are sent, unless a time-out was set by using Socket.SendTimeout. Si se ha superado el valor de tiempo de espera, el Send llamada producirá un SocketException.If the time-out value was exceeded, the Send call will throw a SocketException. En el modo de no bloqueo, Send puede completarse correctamente incluso si envía a menor que el número de bytes en el búfer.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes in the buffer. Es responsabilidad de la aplicación para mantener el seguimiento del número de bytes enviados y vuelva a intentar la operación hasta que la aplicación envía el número de bytes solicitado.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the requested number of bytes. No hay ninguna garantía de que los datos que envíe aparecerán en la red inmediatamente.There is also no guarantee that the data you send will appear on the network immediately. Para aumentar la eficacia de la red, el sistema subyacente podría retrasar la transmisión hasta que se recopila una cantidad significativa de datos salientes.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. La finalización correcta de la Send método significa que el sistema subyacente disponía de suficiente espacio en búfer los datos de una red de envío.A successful completion of the Send method means that the underlying system has had room to buffer your data for a network send.

Nota

Debe asegurarse de que el tamaño del búfer no supera el tamaño máximo de paquetes del proveedor de servicios subyacente.You must ensure that the size of your buffer does not exceed the maximum packet size of the underlying service provider. Si es así, no se enviará el datagrama y Send producirá un SocketException.If it does, the datagram will not be sent and Send will throw a SocketException. Si recibe un SocketException, utilice el SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de haber obtenido este código, consulte el código de error de API de la versión 2 de Windows Sockets documentación para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

La finalización correcta de un envío no indica que los datos se ha entregado correctamente.The successful completion of a send does not indicate that the data was successfully delivered. Si no hay espacio de búfer disponible dentro del sistema de transporte para contener los datos que se transmitan, envío bloqueará a menos que el socket se ha colocado en el modo de no bloqueo.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en .NET Framework.For more information, see Network Tracing in the .NET Framework.

Consulte también:

Send(IList<ArraySegment<Byte>>, SocketFlags) Send(IList<ArraySegment<Byte>>, SocketFlags) Send(IList<ArraySegment<Byte>>, SocketFlags)

Envía el conjunto de búferes de la lista a un Socket conectado, utilizando el SocketFlags especificado.Sends the set of buffers in the list to a connected Socket, using the specified SocketFlags.

public:
 int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public int Send (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> int

Parámetros

buffers
IList<ArraySegment<Byte>>

Lista de objetos ArraySegment<T> de tipo Byte que contiene los datos que se han de enviar.A list of ArraySegment<T>s of type Byte that contains the data to be sent.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

Combinación bit a bit de los valores de SocketFlags.A bitwise combination of the SocketFlags values.

Devoluciones

Número de bytes enviados a Socket.The number of bytes sent to the Socket.

Excepciones

Error al intentar acceder al socket.An error occurred when attempting to access the socket.

Comentarios

Esta sobrecarga requiere al menos un búfer que contiene los datos que desea enviar.This overload requires at least one buffer that contains the data you want to send. El SocketFlags como valor predeterminado 0.The SocketFlags value defaults to 0. Si especifica la DontRoute marca como el socketFlags parámetro, los datos que se envía no se enrutarán.If you specify the DontRoute flag as the socketFlags parameter, the data you are sending will not be routed.

Si usa un protocolo sin conexión, debe llamar a Connect antes de llamar a este método, o Send producirá un SocketException.If you are using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Si utiliza un protocolo orientado a conexiones, debe usar Connect para establecer una conexión de host remoto, o use Accept para aceptar una conexión entrante.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Si usa un protocolo sin conexión y un plan para enviar datos a varios hosts diferentes, debe usar el SendTo método.If you are using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Si no usa el SendTo método, tendrá que llamar Connect antes de cada llamada a Send.If you do not use the SendTo method, you will have to call Connect before each call to Send. Puede usar SendTo incluso después de haber establecido un host remoto predeterminado mediante Connect.You can use SendTo even after you have established a default remote host with Connect. También puede cambiar el host remoto predeterminado antes de llamar a Send mediante otra llamada a Connect.You can also change the default remote host prior to calling Send by making another call to Connect.

Si usa un protocolo orientado a conexiones, Send se bloqueará hasta que se envían todos los bytes del búfer, a menos que se haya establecido un tiempo de espera mediante Socket.SendTimeout.If you are using a connection-oriented protocol, Send will block until all of the bytes in the buffer are sent, unless a time-out was set by using Socket.SendTimeout. Si se ha superado el valor de tiempo de espera, el Send llamada producirá un SocketException.If the time-out value was exceeded, the Send call will throw a SocketException. En el modo sin bloqueo, Send puede completarse correctamente incluso si envía a menor que el número de bytes en el búfer.In non-blocking mode, Send may complete successfully even if it sends less than the number of bytes in the buffer. Es responsabilidad de la aplicación para mantener el seguimiento del número de bytes enviados y vuelva a intentar la operación hasta que la aplicación envía los bytes del búfer.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the bytes in the buffer. No hay ninguna garantía de que los datos que envíe aparecerán en la red inmediatamente.There is also no guarantee that the data you send will appear on the network immediately. Para aumentar la eficacia de la red, el sistema subyacente podría retrasar la transmisión hasta que se recopila una cantidad significativa de datos salientes.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. La finalización correcta de la Send método significa que el sistema subyacente disponía de suficiente espacio en búfer los datos de una red de envío.A successful completion of the Send method means that the underlying system has had room to buffer your data for a network send.

Nota

Si recibe un SocketException, utilice el SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de haber obtenido este código, consulte el código de error de API de la versión 2 de Windows Sockets documentación para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

La finalización correcta de un envío no indica que los datos se ha entregado correctamente.The successful completion of a send does not indicate that the data was successfully delivered. Si no hay espacio de búfer disponible dentro del sistema de transporte para contener los datos que se transmitan, envío bloqueará a menos que el socket se ha colocado en el modo de no bloqueo.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en .NET Framework.For more information, see Network Tracing in the .NET Framework.

Send(ReadOnlySpan<Byte>, SocketFlags) Send(ReadOnlySpan<Byte>, SocketFlags) Send(ReadOnlySpan<Byte>, SocketFlags)

public:
 int Send(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Send (ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags -> int

Parámetros

buffer
ReadOnlySpan<Byte>

Devoluciones

Send(Byte[], Int32, SocketFlags) Send(Byte[], Int32, SocketFlags) Send(Byte[], Int32, SocketFlags)

Envía el número especificado de bytes de datos a un objeto Socket conectado, usando el marcador SocketFlags especificado.Sends the specified number of bytes of data to a connected Socket, using the specified SocketFlags.

public:
 int Send(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Send (byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : byte[] * int * System.Net.Sockets.SocketFlags -> int

Parámetros

buffer
Byte[]

Matriz de tipo Byte que contiene los datos que se van a enviar.An array of type Byte that contains the data to be sent.

size
Int32 Int32 Int32 Int32

Número de bytes para enviar.The number of bytes to send.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

Combinación bit a bit de los valores de SocketFlags.A bitwise combination of the SocketFlags values.

Devoluciones

Número de bytes enviados a Socket.The number of bytes sent to the Socket.

Excepciones

size es menor que 0 o supera el tamaño del búfer.size is less than 0 or exceeds the size of the buffer.

socketFlags no es una combinación válida de valores.socketFlags is not a valid combination of values.

O bien-or- Se produce un error del sistema operativo al tener acceso al socket.An operating system error occurs while accessing the socket.

Ejemplos

El ejemplo de código siguiente envía los datos que se encuentra en el búfer y especifica None para SocketFlags.The following code example sends the data found in buffer, and specifies None for SocketFlags.

// Displays sending with a connected socket
// using the overload that takes a buffer, message size, and socket flags.
int SendReceiveTest3( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int i = server->Send( msg, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", i.ToString() );
      
      // Get reply from the server.
      int byteCount = server->Receive( bytes, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, message size, and socket flags.
public static int SendReceiveTest3(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try 
    {
        // Blocks until send returns.
        int i = server.Send(msg, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", i);
        
        // Get reply from the server.
        int byteCount = server.Receive(bytes, server.Available, 
                                           SocketFlags.None);
        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, message size, and socket flags.
Public Shared Function SendReceiveTest3(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim i As Integer = server.Send(msg, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", i)
        
        ' Get reply from the server.
        Dim byteCount As Integer = server.Receive(bytes, server.Available, SocketFlags.None)
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest3

Comentarios

Send envía datos de forma sincrónica al host remoto establecido en el Connect o Accept método y devuelve el número de bytes enviado correctamente.Send synchronously sends data to the remote host established in the Connect or Accept method and returns the number of bytes successfully sent. Send puede usarse para protocolos orientados a conexiones y sin conexión.Send can be used for both connection-oriented and connectionless protocols.

Esta sobrecarga requiere un búfer que contiene los datos que desea enviar, el número de bytes que desea enviar y una combinación bit a bit de los SocketFlags.This overload requires a buffer that contains the data you want to send, the number of bytes you want to send, and a bitwise combination of any SocketFlags. Si especifica la DontRoute marca como el socketflags parámetro, los datos que se envía no se enrutarán.If you specify the DontRoute flag as the socketflags parameter, the data you are sending will not be routed.

Si usa un protocolo sin conexión, debe llamar a Connect antes de llamar a este método, o Send producirá un SocketException.If you are using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Si utiliza un protocolo orientado a conexiones, debe usar Connect para establecer una conexión de host remoto, o use Accept para aceptar una conexión entrante.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Si usa un protocolo sin conexión y un plan para enviar datos a varios hosts diferentes, debe usar el SendTo método.If you are using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Si no usa el SendTo método, tendrá que llamar el Connect método antes de cada llamada a la Send método.If you do not use the SendTo method, you will have to call the Connect method before each call to the Send method. Puede usar SendTo incluso después de haber establecido un host remoto predeterminado mediante Connect.You can use SendTo even after you have established a default remote host with Connect. También puede cambiar el host remoto predeterminado antes de llamar a Send mediante otra llamada a Connect.You can also change the default remote host prior to calling Send by making another call to Connect.

Con un protocolo orientado a conexiones, Send se bloqueará hasta que se envía el número de bytes solicitado, a menos que se haya establecido un tiempo de espera mediante Socket.SendTimeout.With a connection-oriented protocol, Send will block until the requested number of bytes are sent, unless a time-out was set by using Socket.SendTimeout. Si se ha superado el valor de tiempo de espera, el Send llamada producirá un SocketException.If the time-out value was exceeded, the Send call will throw a SocketException. En el modo de no bloqueo, Send puede completarse correctamente incluso si envía menor que el número de bytes que se solicite.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes you request. Es responsabilidad de la aplicación para mantener el seguimiento del número de bytes enviados y vuelva a intentar la operación hasta que la aplicación envía el número de bytes solicitado.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the requested number of bytes. No hay ninguna garantía de que los datos que envíe aparecerán en la red inmediatamente.There is also no guarantee that the data you send will appear on the network immediately. Para aumentar la eficacia de la red, el sistema subyacente podría retrasar la transmisión hasta que se recopila una cantidad significativa de datos salientes.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. La finalización correcta de la Send método significa que el sistema subyacente disponía de suficiente espacio en búfer los datos de una red de envío.A successful completion of the Send method means that the underlying system has had room to buffer your data for a network send.

Nota

Debe asegurarse de que el tamaño no supera el tamaño máximo de paquetes del proveedor de servicios subyacente.You must ensure that the size does not exceed the maximum packet size of the underlying service provider. Si es así, no se enviará el datagrama y Send producirá un SocketException.If it does, the datagram will not be sent and Send will throw a SocketException. Si recibe un SocketException, utilice el SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de haber obtenido este código, consulte el código de error de API de la versión 2 de Windows Sockets documentación para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

La finalización correcta de un envío no indica que los datos se ha entregado correctamente.The successful completion of a send does not indicate that the data was successfully delivered. Si no hay espacio de búfer disponible dentro del sistema de transporte para contener los datos que se transmitan, envío bloqueará a menos que el socket se ha colocado en el modo de no bloqueo.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en .NET Framework.For more information, see Network Tracing in the .NET Framework.

Consulte también:

Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError) Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError) Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

Importante

Esta API no es conforme a CLS.

Alternativa conforme a CLS
System.Net.Sockets.Socket.Send(Byte[], Int32, SocketFlags)

Envía el conjunto de búferes de la lista a un Socket conectado, utilizando el SocketFlags especificado.Sends the set of buffers in the list to a connected Socket, using the specified SocketFlags.

public:
 int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
[System.CLSCompliant(false)]
public int Send (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags *  -> int

Parámetros

buffers
IList<ArraySegment<Byte>>

Lista de objetos ArraySegment<T> de tipo Byte que contiene los datos que se han de enviar.A list of ArraySegment<T>s of type Byte that contains the data to be sent.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

Combinación bit a bit de los valores de SocketFlags.A bitwise combination of the SocketFlags values.

errorCode
SocketError SocketError SocketError SocketError

Objeto SocketError que almacena el error de socket.A SocketError object that stores the socket error.

Devoluciones

Número de bytes enviados a Socket.The number of bytes sent to the Socket.

Excepciones

Error al intentar acceder al socket.An error occurred when attempting to access the socket.

Comentarios

Esta sobrecarga requiere al menos un búfer que contiene los datos que desea enviar.This overload requires at least one buffer that contains the data you want to send. El SocketFlags como valor predeterminado 0.The SocketFlags value defaults to 0. Si especifica la DontRoute marca como el socketFlags parámetro, los datos que se envía no se enrutarán.If you specify the DontRoute flag as the socketFlags parameter, the data you are sending will not be routed.

Si usa un protocolo sin conexión, debe llamar a Connect antes de llamar a este método, o Send producirá un SocketException.If you are using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Si utiliza un protocolo orientado a conexiones, debe usar Connect para establecer una conexión de host remoto, o use Accept para aceptar una conexión entrante.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Si usa un protocolo sin conexión y un plan para enviar datos a varios hosts diferentes, debe usar el SendTo método.If you are using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Si no usa el SendTo método, tendrá que llamar Connect antes de cada llamada a Send.If you do not use the SendTo method, you will have to call Connect before each call to Send. Puede usar SendTo incluso después de haber establecido un host remoto predeterminado mediante Connect.You can use SendTo even after you have established a default remote host with Connect. También puede cambiar el host remoto predeterminado antes de llamar a Send mediante otra llamada a Connect.You can also change the default remote host prior to calling Send by making another call to Connect.

Si usa un protocolo orientado a conexiones, Send se bloqueará hasta que se envían todos los bytes del búfer, a menos que se haya establecido un tiempo de espera mediante Socket.SendTimeout.If you are using a connection-oriented protocol, Send will block until all of the bytes in the buffer are sent, unless a time-out was set by using Socket.SendTimeout. Si se ha superado el valor de tiempo de espera, el Send llamada producirá un SocketException.If the time-out value was exceeded, the Send call will throw a SocketException. En el modo sin bloqueo, Send puede completarse correctamente incluso si envía a menor que el número de bytes en el búfer.In non-blocking mode, Send may complete successfully even if it sends less than the number of bytes in the buffer. Es responsabilidad de la aplicación para mantener el seguimiento del número de bytes enviados y vuelva a intentar la operación hasta que la aplicación envía los bytes del búfer.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the bytes in the buffer. No hay ninguna garantía de que los datos que envíe aparecerán en la red inmediatamente.There is also no guarantee that the data you send will appear on the network immediately. Para aumentar la eficacia de la red, el sistema subyacente podría retrasar la transmisión hasta que se recopila una cantidad significativa de datos salientes.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. La finalización correcta de la Send método significa que el sistema subyacente disponía de suficiente espacio en búfer los datos de una red de envío.A successful completion of the Send method means that the underlying system has had room to buffer your data for a network send.

Nota

Si recibe un SocketException, utilice el SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de haber obtenido este código, consulte el código de error de API de la versión 2 de Windows Sockets documentación para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

La finalización correcta de un envío no indica que los datos se ha entregado correctamente.The successful completion of a send does not indicate that the data was successfully delivered. Si no hay espacio de búfer disponible dentro del sistema de transporte para contener los datos que se transmitan, envío bloqueará a menos que el socket se ha colocado en el modo de no bloqueo.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en .NET Framework.For more information, see Network Tracing in the .NET Framework.

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError) Send(ReadOnlySpan<Byte>, SocketFlags, SocketError) Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

public:
 int Send(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send (ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags *  -> int

Parámetros

buffer
ReadOnlySpan<Byte>

Devoluciones

Send(Byte[], Int32, Int32, SocketFlags) Send(Byte[], Int32, Int32, SocketFlags) Send(Byte[], Int32, Int32, SocketFlags)

Envía el número especificado de bytes de datos a un Socket conectado, comenzando en el desplazamiento especificado y usando el SocketFlags especificado.Sends the specified number of bytes of data to a connected Socket, starting at the specified offset, and using the specified SocketFlags.

public:
 int Send(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Send (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : byte[] * int * int * System.Net.Sockets.SocketFlags -> int

Parámetros

buffer
Byte[]

Matriz de tipo Byte que contiene los datos que se van a enviar.An array of type Byte that contains the data to be sent.

offset
Int32 Int32 Int32 Int32

Posición en el búfer de datos donde comienza el envío de datos.The position in the data buffer at which to begin sending data.

size
Int32 Int32 Int32 Int32

Número de bytes para enviar.The number of bytes to send.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

Combinación bit a bit de los valores de SocketFlags.A bitwise combination of the SocketFlags values.

Devoluciones

Número de bytes enviados a Socket.The number of bytes sent to the Socket.

Excepciones

offset es menor que 0.offset is less than 0.

O bien-or- offset es mayor que la longitud de buffer.offset is greater than the length of buffer.

O bien-or- size es menor que 0.size is less than 0.

O bien-or- size es mayor que la longitud de buffer menos el valor del parámetro offset.size is greater than the length of buffer minus the value of the offset parameter.

socketFlags no es una combinación válida de valores.socketFlags is not a valid combination of values.

O bien-or- Se produce un error de sistema operativo al acceder a Socket.An operating system error occurs while accessing the Socket.

Ejemplos

El ejemplo de código siguiente especifica el búfer de datos, un desplazamiento, un tamaño, y SocketFlags para enviar datos a una conectada Socket.The following code example specifies the data buffer, an offset, a size, and SocketFlags for sending data to a connected Socket.

// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
int SendReceiveTest4( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      
      // Blocks until send returns.
      int byteCount = server->Send( msg, 0, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, 0, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine(  "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try 
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);
        
        // Get reply from the server.
        byteCount = server.Receive(bytes, 0, server.Available, 
                                   SocketFlags.None);

        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
        
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest4

Comentarios

Send envía datos de forma sincrónica al host remoto especificado en el Connect o Accept método y devuelve el número de bytes enviado correctamente.Send synchronously sends data to the remote host specified in the Connect or Accept method and returns the number of bytes successfully sent. Send puede usarse para protocolos orientados a conexiones y sin conexión.Send can be used for both connection-oriented and connectionless protocols.

En esta sobrecarga, si especifica la DontRoute marca como el socketflags parámetro, los datos que se envía no se enrutarán.In this overload, if you specify the DontRoute flag as the socketflags parameter, the data you are sending will not be routed.

Si usa un protocolo sin conexión, debe llamar a Connect antes de llamar a este método o Send producirá un SocketException.If you are using a connectionless protocol, you must call Connect before calling this method or Send will throw a SocketException. Si utiliza un protocolo orientado a conexiones, debe usar Connect para establecer una conexión de host remoto, o use Accept para aceptar una conexión entrante.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Si usa un protocolo sin conexión y un plan para enviar datos a varios hosts diferentes, debe usar SendTo.If you are using a connectionless protocol and plan to send data to several different hosts, you should use SendTo. Si no usas SendTo, tendrá que llamar a Connect antes de cada llamada a Send.If you do not use SendTo, you will have to call Connect before each call to Send. No pasa nada por usar SendTo incluso después de haber establecido un host remoto predeterminado mediante Connect.It is okay to use SendTo even after you have established a default remote host with Connect. También puede cambiar el host remoto predeterminado antes de llamar a Send mediante otra llamada a Connect.You can also change the default remote host prior to calling Send by making another call to Connect.

También debe asegurarse de que el tamaño no supera el tamaño máximo de paquetes del proveedor de servicios subyacente.You must also be sure that the size does not exceed the maximum packet size of the underlying service provider. Si es así, no se enviará el datagrama y Send producirá un SocketException.If it does, the datagram will not be sent and Send will throw a SocketException.

Si usa un protocolo orientado a conexiones, Send se bloqueará hasta que se envía el número de bytes solicitado, a menos que se haya establecido un tiempo de espera mediante Socket.SendTimeout.If you are using a connection-oriented protocol, Send will block until the requested number of bytes are sent, unless a time-out was set by using Socket.SendTimeout. Si se ha superado el valor de tiempo de espera, el Send llamada producirá un SocketException.If the time-out value was exceeded, the Send call will throw a SocketException. En el modo de no bloqueo, Send puede completarse correctamente incluso si envía menor que el número de bytes que se solicite.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes you request. Es responsabilidad de la aplicación para mantener el seguimiento del número de bytes enviados y vuelva a intentar la operación hasta que la aplicación envía el número de bytes solicitado.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the requested number of bytes. No hay ninguna garantía de que los datos que envíe aparecerán en la red inmediatamente.There is also no guarantee that the data you send will appear on the network immediately. Para aumentar la eficacia de la red, el sistema subyacente podría retrasar la transmisión hasta que se recopila una cantidad significativa de datos salientes.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. La finalización correcta de la Send método significa que el sistema subyacente disponía de suficiente espacio en búfer los datos de una red de envío.A successful completion of the Send method means that the underlying system has had room to buffer your data for a network send.

Nota

Si recibe un SocketException, utilice el SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de haber obtenido este código, consulte el código de error de API de la versión 2 de Windows Sockets documentación para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

La finalización correcta de un envío no indica que los datos se ha entregado correctamente.The successful completion of a send does not indicate that the data was successfully delivered. Si no hay espacio de búfer disponible dentro del sistema de transporte para contener los datos que se transmitan, envío bloqueará a menos que el socket se ha colocado en el modo de no bloqueo.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en .NET Framework.For more information, see Network Tracing in the .NET Framework.

Consulte también:

Send(Byte[], Int32, Int32, SocketFlags, SocketError) Send(Byte[], Int32, Int32, SocketFlags, SocketError) Send(Byte[], Int32, Int32, SocketFlags, SocketError)

Envía el número especificado de bytes de datos a un objeto Socket conectado, a partir de la posición de desplazamiento especificada y usando el valor de SocketFlags especificado.Sends the specified number of bytes of data to a connected Socket, starting at the specified offset, and using the specified SocketFlags

public:
 int Send(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : byte[] * int * int * System.Net.Sockets.SocketFlags *  -> int

Parámetros

buffer
Byte[]

Matriz de tipo Byte que contiene los datos que se van a enviar.An array of type Byte that contains the data to be sent.

offset
Int32 Int32 Int32 Int32

Posición en el búfer de datos donde comienza el envío de datos.The position in the data buffer at which to begin sending data.

size
Int32 Int32 Int32 Int32

Número de bytes para enviar.The number of bytes to send.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

Combinación bit a bit de los valores de SocketFlags.A bitwise combination of the SocketFlags values.

errorCode
SocketError SocketError SocketError SocketError

Objeto SocketError que almacena el error de socket.A SocketError object that stores the socket error.

Devoluciones

Número de bytes enviados a Socket.The number of bytes sent to the Socket.

Excepciones

offset es menor que 0.offset is less than 0.

O bien-or- offset es mayor que la longitud de buffer.offset is greater than the length of buffer.

O bien-or- size es menor que 0.size is less than 0.

O bien-or- size es mayor que la longitud de buffer menos el valor del parámetro offset.size is greater than the length of buffer minus the value of the offset parameter.

socketFlags no es una combinación válida de valores.socketFlags is not a valid combination of values.

O bien-or- Se produce un error de sistema operativo al acceder a Socket.An operating system error occurs while accessing the Socket.

Ejemplos

El ejemplo de código siguiente especifica el búfer de datos, un desplazamiento, un tamaño, y SocketFlags para enviar datos a una conectada Socket.The following code example specifies the data buffer, an offset, a size, and SocketFlags for sending data to a connected Socket.

// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
int SendReceiveTest4( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      
      // Blocks until send returns.
      int byteCount = server->Send( msg, 0, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, 0, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine(  "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try 
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);
        
        // Get reply from the server.
        byteCount = server.Receive(bytes, 0, server.Available, 
                                   SocketFlags.None);

        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
        
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest4

Comentarios

Send envía datos de forma sincrónica al host remoto especificado en el Connect o Accept método y devuelve el número de bytes enviado correctamente.Send synchronously sends data to the remote host specified in the Connect or Accept method and returns the number of bytes successfully sent. Send puede usarse para protocolos orientados a conexiones y sin conexión.Send can be used for both connection-oriented and connectionless protocols.

En esta sobrecarga, si especifica la DontRoute marca como el socketflags parámetro, los datos que se envía no se enrutarán.In this overload, if you specify the DontRoute flag as the socketflags parameter, the data you are sending will not be routed.

Si usa un protocolo sin conexión, debe llamar a Connect antes de llamar a este método o Send producirá un SocketException.If you are using a connectionless protocol, you must call Connect before calling this method or Send will throw a SocketException. Si utiliza un protocolo orientado a conexiones, debe usar Connect para establecer una conexión de host remoto, o use Accept para aceptar una conexión entrante.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Si usa un protocolo sin conexión y un plan para enviar datos a varios hosts diferentes, debe usar SendTo.If you are using a connectionless protocol and plan to send data to several different hosts, you should use SendTo. Si no usas SendTo, tendrá que llamar a Connect antes de cada llamada a Send.If you do not use SendTo, you will have to call Connect before each call to Send. No pasa nada por usar SendTo incluso después de haber establecido un host remoto predeterminado mediante Connect.It is okay to use SendTo even after you have established a default remote host with Connect. También puede cambiar el host remoto predeterminado antes de llamar a Send mediante otra llamada a Connect.You can also change the default remote host prior to calling Send by making another call to Connect.

También debe asegurarse de que el tamaño no supera el tamaño máximo de paquetes del proveedor de servicios subyacente.You must also be sure that the size does not exceed the maximum packet size of the underlying service provider. Si es así, no se enviará el datagrama y Send producirá un SocketException.If it does, the datagram will not be sent and Send will throw a SocketException.

Si usa un protocolo orientado a conexiones, Send se bloqueará hasta que se envía el número de bytes solicitado, a menos que se haya establecido un tiempo de espera mediante Socket.SendTimeout.If you are using a connection-oriented protocol, Send will block until the requested number of bytes are sent, unless a time-out was set by using Socket.SendTimeout. Si se ha superado el valor de tiempo de espera, el Send llamada producirá un SocketException.If the time-out value was exceeded, the Send call will throw a SocketException. En el modo de no bloqueo, Send puede completarse correctamente incluso si envía menor que el número de bytes que se solicite.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes you request. Es responsabilidad de la aplicación para mantener el seguimiento del número de bytes enviados y vuelva a intentar la operación hasta que la aplicación envía el número de bytes solicitado.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the requested number of bytes. No hay ninguna garantía de que los datos que envíe aparecerán en la red inmediatamente.There is also no guarantee that the data you send will appear on the network immediately. Para aumentar la eficacia de la red, el sistema subyacente podría retrasar la transmisión hasta que se recopila una cantidad significativa de datos salientes.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. La finalización correcta de la Send método significa que el sistema subyacente disponía de suficiente espacio en búfer los datos de una red de envío.A successful completion of the Send method means that the underlying system has had room to buffer your data for a network send.

Nota

Si recibe un SocketException, utilice el SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de haber obtenido este código, consulte el código de error de API de la versión 2 de Windows Sockets documentación para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

La finalización correcta de un envío no indica que los datos se ha entregado correctamente.The successful completion of a send does not indicate that the data was successfully delivered. Si no hay espacio de búfer disponible dentro del sistema de transporte para contener los datos que se transmitan, envío bloqueará a menos que el socket se ha colocado en el modo de no bloqueo.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en .NET Framework.For more information, see Network Tracing in the .NET Framework.

Consulte también:

Se aplica a