Socket.Send Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Envía datos a un conectado Socket.
Sobrecargas
| Nombre | Description |
|---|---|
| Send(ReadOnlySpan<Byte>, SocketFlags, SocketError) |
Envía datos a un conectado Socket mediante el especificado SocketFlags. |
| Send(ReadOnlySpan<Byte>) |
Envía datos a un conectado Socket. |
| Send(Byte[], Int32, Int32, SocketFlags, SocketError) |
Envía el número especificado de bytes de datos a un objeto conectado Socket, comenzando en el desplazamiento especificado y utilizando el especificado SocketFlags. |
| Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError) |
Envía el conjunto de búferes de la lista a un conectado Socketmediante el especificado SocketFlags. |
| Send(Byte[], Int32, Int32, SocketFlags) |
Envía el número especificado de bytes de datos a un objeto conectado Socket, comenzando en el desplazamiento especificado y utilizando el especificado SocketFlags. |
| Send(Byte[], Int32, SocketFlags) |
Envía el número especificado de bytes de datos a un objeto conectado Socketmediante el especificado SocketFlags. |
| Send(IList<ArraySegment<Byte>>) |
Envía el conjunto de búferes de la lista a un conectado Socket. |
| Send(IList<ArraySegment<Byte>>, SocketFlags) |
Envía el conjunto de búferes de la lista a un conectado Socketmediante el especificado SocketFlags. |
| Send(Byte[], SocketFlags) |
Envía datos a un conectado Socket mediante el especificado SocketFlags. |
| Send(ReadOnlySpan<Byte>, SocketFlags) |
Envía datos a un conectado Socket mediante el especificado SocketFlags. |
| Send(Byte[]) |
Envía datos a un conectado Socket. |
Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía datos a un conectado Socket mediante el especificado SocketFlags.
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 * SocketError -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, ByRef errorCode As SocketError) 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 enumeración que especifica comportamientos de envío y recepción.
- errorCode
- SocketError
Cuando este método vuelve, contiene uno de los valores de enumeración que define códigos de error para el socket.
Devoluciones
Número de bytes enviados a .Socket
Excepciones
Error al intentar acceder al socket.
Se Socket ha cerrado.
Comentarios
Send Envía datos de forma sincrónica al host remoto especificado en el Connect método o Accept y devuelve el número de bytes enviados correctamente. Send se puede usar tanto para protocolos orientados a la conexión como sin conexión.
Esta sobrecarga requiere un búfer que contenga los datos que desea enviar. El SocketFlags valor predeterminado es 0, el desplazamiento del búfer tiene como valor predeterminado 0 y el número de bytes para enviar valores predeterminados al tamaño del búfer.
Si usa un protocolo sin conexión, debe llamar a Connect antes de llamar a este método o Send producirá un SocketException. Si usa un protocolo orientado a la conexión, debe usar Connect para establecer una conexión de host remota o usar Accept para aceptar una conexión entrante.
Si usa un protocolo sin conexión y tiene previsto enviar datos a varios hosts diferentes, debe usar el SendTo método . Si no usa el SendTo método , tendrá que llamar Connect a antes de cada llamada a Send. Puede usar SendTo incluso después de establecer un host remoto predeterminado con Connect. También puede cambiar el host remoto predeterminado antes de llamar Send mediante otra llamada a Connect.
Si usa un protocolo orientado a la conexión, Send se bloqueará hasta que se envíen todos los bytes del búfer, a menos que se establezca un tiempo de espera mediante Socket.SendTimeout. Si se superó el valor de tiempo de espera, la Send llamada producirá un SocketException. En el modo de no bloqueo, Send puede completarse correctamente incluso si envía menos del número de bytes en el búfer. 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 los bytes en el búfer. Tampoco hay ninguna garantía de que los datos que envíe aparecerán en la red inmediatamente. Para aumentar la eficacia de la red, el sistema subyacente puede retrasar la transmisión hasta que se recopile una cantidad significativa de datos salientes. Una finalización correcta del Send método significa que el sistema subyacente ha tenido espacio para almacenar en búfer los datos de un envío de red.
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.
Este miembro genera información de seguimiento al habilitar el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.
Importante
La finalización correcta de un envío no indica que los datos se entregaron correctamente. Si no hay ningún espacio de búfer disponible en el sistema de transporte para contener los datos que se van a transmitir, el envío se bloqueará a menos que el socket se haya colocado en modo de no bloqueo.
Consulte también
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Se aplica a
Send(ReadOnlySpan<Byte>)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía datos a un conectado Socket.
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>
Intervalo de bytes que contiene los datos que se van a enviar.
Devoluciones
Número de bytes enviados a .Socket
Excepciones
Error al intentar acceder al socket.
Se Socket ha cerrado.
Comentarios
Send Envía datos de forma sincrónica al host remoto especificado en el Connect método o Accept y devuelve el número de bytes enviados correctamente. Send se puede usar tanto para protocolos orientados a la conexión como sin conexión.
Esta sobrecarga requiere un búfer que contenga los datos que desea enviar. El SocketFlags valor predeterminado es 0, el desplazamiento del búfer tiene como valor predeterminado 0 y el número de bytes para enviar valores predeterminados al tamaño del búfer.
Si usa un protocolo sin conexión, debe llamar a Connect antes de llamar a este método o Send producirá un SocketException. Si usa un protocolo orientado a la conexión, debe usar Connect para establecer una conexión de host remota o usar Accept para aceptar una conexión entrante.
Si usa un protocolo sin conexión y tiene previsto enviar datos a varios hosts diferentes, debe usar el SendTo método . Si no usa el SendTo método , tendrá que llamar Connect a antes de cada llamada a Send. Puede usar SendTo incluso después de haber establecido un host remoto predeterminado con Connect. También puede cambiar el host remoto predeterminado antes de llamar Send mediante otra llamada a Connect.
Si usa un protocolo orientado a la conexión, Send se bloqueará hasta que se envíen todos los bytes del búfer, a menos que se establezca un tiempo de espera mediante Socket.SendTimeout. Si se superó el valor de tiempo de espera, la Send llamada producirá un SocketException. En el modo de no bloqueo, Send puede completarse correctamente incluso si envía menos del número de bytes en el búfer. 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 los bytes en el búfer. Tampoco hay ninguna garantía de que los datos que envíe aparecerán en la red inmediatamente. Para aumentar la eficacia de la red, el sistema subyacente puede retrasar la transmisión hasta que se recopile una cantidad significativa de datos salientes. Una finalización correcta del Send método significa que el sistema subyacente ha tenido espacio para almacenar en búfer los datos de un envío de red.
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.
Este miembro genera información de seguimiento al habilitar el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.
Importante
La finalización correcta de un envío no indica que los datos se entregaron correctamente. Si no hay ningún espacio de búfer disponible en el sistema de transporte para contener los datos que se van a transmitir, el envío se bloqueará a menos que el socket se haya colocado en modo de no bloqueo.
Consulte también
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Se aplica a
Send(Byte[], Int32, Int32, SocketFlags, SocketError)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía el número especificado de bytes de datos a un objeto conectado Socket, comenzando en el desplazamiento especificado y utilizando el especificado 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 * SocketError -> int
Public Function Send (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer
Parámetros
- offset
- Int32
Posición en el búfer de datos en el que se van a empezar a enviar datos.
- size
- Int32
Número de bytes que se van a enviar.
- socketFlags
- SocketFlags
Combinación bit a bit de los SocketFlags valores.
- errorCode
- SocketError
Objeto SocketError que almacena el error de socket.
Devoluciones
Número de bytes enviados a .Socket
Excepciones
buffer 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 offset parámetro.
socketFlags no es una combinación válida de valores.
O bien
Se produce un error del sistema operativo al acceder a .Socket
Se Socket ha cerrado.
Ejemplos
En el ejemplo de código siguiente se especifica el búfer de datos, un desplazamiento, un tamaño y SocketFlags para enviar datos a un conectado Socket.
// 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, bytes.Length, SocketFlags.None);
if (byteCount > 0)
Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
}
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 método o Accept y devuelve el número de bytes enviados correctamente. Send se puede usar tanto para protocolos orientados a la conexión como sin conexión.
En esta sobrecarga, si especifica la DontRoute marca como parámetro socketflags , los datos que se envían no se enrutarán.
Si usa un protocolo sin conexión, debe llamar Connect a antes de llamar a este método o Send producirá una SocketExceptionexcepción . Si usa un protocolo orientado a la conexión, debe usar Connect para establecer una conexión de host remoto o usar Accept para aceptar una conexión entrante.
Si usa un protocolo sin conexión y tiene previsto enviar datos a varios hosts diferentes, debe usar SendTo. Si no usa SendTo, tendrá que llamar Connect antes de cada llamada a Send. Está bien usar SendTo incluso después de haber establecido un host remoto predeterminado con Connect. También puede cambiar el host remoto predeterminado antes de llamar Send mediante otra llamada a Connect.
También debe asegurarse de que el tamaño no supere el tamaño máximo del paquete del proveedor de servicios subyacente. Si lo hace, el datagrama no se enviará y Send producirá una SocketExceptionexcepción .
Si usa un protocolo orientado a la conexión, Send se bloqueará hasta que se envíe el número de bytes solicitado, a menos que se establezca un tiempo de espera mediante Socket.SendTimeout. Si se superó el valor de tiempo de espera, la Send llamada producirá un SocketException. En el modo de no bloqueo, Send puede completarse correctamente incluso si envía menos del número de bytes que solicita. 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 eficacia de la red, el sistema subyacente puede retrasar la transmisión hasta que se recopile una cantidad significativa de datos salientes. Una finalización correcta del Send método significa que el sistema subyacente ha tenido espacio para almacenar en búfer los datos de un envío de red.
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:
La finalización correcta de un envío no indica que los datos se entregaron correctamente. Si no hay ningún espacio de búfer disponible en el sistema de transporte para contener los datos que se van a transmitir, el envío se bloqueará a menos que el socket se haya colocado en modo de no bloqueo.
Nota:
Este miembro genera información de seguimiento al habilitar el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.
Consulte también
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Se aplica a
Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía el conjunto de búferes de la lista a un conectado Socketmediante el especificado 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);
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 * SocketError -> int
Public Function Send (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer
Parámetros
- buffers
- IList<ArraySegment<Byte>>
Lista de ArraySegment<T>Byte tipo que contiene los datos que se van a enviar.
- socketFlags
- SocketFlags
Combinación bit a bit de los SocketFlags valores.
- errorCode
- SocketError
Objeto SocketError que almacena el error de socket.
Devoluciones
Número de bytes enviados a .Socket
Excepciones
buffers es null.
buffers está vacío.
Error al intentar acceder al socket.
Se Socket ha cerrado.
Comentarios
Esta sobrecarga requiere al menos un búfer que contenga los datos que desea enviar. El SocketFlags valor predeterminado es 0. Si especifica la DontRoute marca como parámetro socketFlags , los datos que se envían no se enrutarán.
Si usa un protocolo sin conexión, debe llamar Connect a antes de llamar a este método o Send producirá una SocketExceptionexcepción . Si usa un protocolo orientado a la conexión, debe usar Connect para establecer una conexión de host remoto o usar Accept para aceptar una conexión entrante.
Si usa un protocolo sin conexión y tiene previsto enviar datos a varios hosts diferentes, debe usar el SendTo método . Si no usa el SendTo método , tendrá que llamar Connect a antes de cada llamada a Send. Puede usar SendTo incluso después de haber establecido un host remoto predeterminado con Connect. También puede cambiar el host remoto predeterminado antes de llamar Send mediante otra llamada a Connect.
Si usa un protocolo orientado a la conexión, Send se bloqueará hasta que se envíen todos los bytes del búfer, a menos que se establezca un tiempo de espera mediante Socket.SendTimeout. Si se superó el valor de tiempo de espera, la Send llamada producirá un SocketException. En modo de no bloqueo, Send puede completarse correctamente incluso si envía menos del número de bytes en el búfer. 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 los bytes en el búfer. Tampoco hay ninguna garantía de que los datos que envíe aparecerán en la red inmediatamente. Para aumentar la eficacia de la red, el sistema subyacente puede retrasar la transmisión hasta que se recopile una cantidad significativa de datos salientes. Una finalización correcta del Send método significa que el sistema subyacente ha tenido espacio para almacenar en búfer los datos de un envío de red.
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:
La finalización correcta de un envío no indica que los datos se entregaron correctamente. Si no hay ningún espacio de búfer disponible en el sistema de transporte para contener los datos que se van a transmitir, el envío se bloqueará a menos que el socket se haya colocado en modo de no bloqueo.
Nota:
Este miembro genera información de seguimiento al habilitar el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.
Se aplica a
Send(Byte[], Int32, Int32, SocketFlags)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía el número especificado de bytes de datos a un objeto conectado Socket, comenzando en el desplazamiento especificado y utilizando el especificado 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
Public Function Send (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags) As Integer
Parámetros
- offset
- Int32
Posición en el búfer de datos en el que se van a empezar a enviar datos.
- size
- Int32
Número de bytes que se van a enviar.
- socketFlags
- SocketFlags
Combinación bit a bit de los SocketFlags valores.
Devoluciones
Número de bytes enviados a .Socket
Excepciones
buffer 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 offset parámetro.
socketFlags no es una combinación válida de valores.
O bien
Se produce un error del sistema operativo al acceder a .Socket
Se Socket ha cerrado.
Ejemplos
En el ejemplo de código siguiente se especifica el búfer de datos, un desplazamiento, un tamaño y SocketFlags para enviar datos a un conectado Socket.
// 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, bytes.Length, SocketFlags.None);
if (byteCount > 0)
Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
}
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 método o Accept y devuelve el número de bytes enviados correctamente. Send se puede usar tanto para protocolos orientados a la conexión como sin conexión.
En esta sobrecarga, si especifica la DontRoute marca como parámetro socketflags , los datos que se envían no se enrutarán.
Si usa un protocolo sin conexión, debe llamar Connect a antes de llamar a este método o Send producirá una SocketExceptionexcepción . Si usa un protocolo orientado a la conexión, debe usar Connect para establecer una conexión de host remoto o usar Accept para aceptar una conexión entrante.
Si usa un protocolo sin conexión y tiene previsto enviar datos a varios hosts diferentes, debe usar SendTo. Si no usa SendTo, tendrá que llamar Connect antes de cada llamada a Send. Está bien usar SendTo incluso después de haber establecido un host remoto predeterminado con Connect. También puede cambiar el host remoto predeterminado antes de llamar Send mediante otra llamada a Connect.
También debe asegurarse de que el tamaño no supere el tamaño máximo del paquete del proveedor de servicios subyacente. Si lo hace, el datagrama no se enviará y Send producirá una SocketExceptionexcepción .
Si usa un protocolo orientado a la conexión, Send se bloqueará hasta que se envíe el número de bytes solicitado, a menos que se establezca un tiempo de espera mediante Socket.SendTimeout. Si se superó el valor de tiempo de espera, la Send llamada producirá un SocketException. En el modo de no bloqueo, Send puede completarse correctamente incluso si envía menos del número de bytes que solicita. 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 eficacia de la red, el sistema subyacente puede retrasar la transmisión hasta que se recopile una cantidad significativa de datos salientes. Una finalización correcta del Send método significa que el sistema subyacente ha tenido espacio para almacenar en búfer los datos de un envío de red.
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:
La finalización correcta de un envío no indica que los datos se entregaron correctamente. Si no hay ningún espacio de búfer disponible en el sistema de transporte para contener los datos que se van a transmitir, el envío se bloqueará a menos que el socket se haya colocado en modo de no bloqueo.
Nota:
Este miembro genera información de seguimiento al habilitar el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.
Consulte también
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Se aplica a
Send(Byte[], Int32, SocketFlags)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía el número especificado de bytes de datos a un objeto conectado Socketmediante el especificado 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
Public Function Send (buffer As Byte(), size As Integer, socketFlags As SocketFlags) As Integer
Parámetros
- size
- Int32
Número de bytes que se van a enviar.
- socketFlags
- SocketFlags
Combinación bit a bit de los SocketFlags valores.
Devoluciones
Número de bytes enviados a .Socket
Excepciones
buffer es null.
size es menor que 0 o supera el tamaño del búfer.
socketFlags no es una combinación válida de valores.
O bien
Se produce un error del sistema operativo al acceder al socket.
Se Socket ha cerrado.
Ejemplos
En el ejemplo de código siguiente se envían los datos encontrados en el búfer y se especifica None para SocketFlags.
// 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, bytes.Length, SocketFlags.None);
if (byteCount > 0)
Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
}
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 método o Accept y devuelve el número de bytes enviados correctamente. Send se puede usar tanto para protocolos orientados a la conexión como sin conexión.
Esta sobrecarga requiere un búfer que contenga los datos que desea enviar, el número de bytes que desea enviar y una combinación bit a bit de cualquier SocketFlags. 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, debe llamar a Connect antes de llamar a este método o Send producirá un SocketException. Si usa un protocolo orientado a la conexión, debe usar Connect para establecer una conexión de host remota o usar Accept para aceptar una conexión entrante.
Si usa un protocolo sin conexión y tiene previsto enviar datos a varios hosts diferentes, debe usar el SendTo método . Si realiza la afinación del SendTo método, tendrá que llamar al Connect método antes de cada llamada al Send método . Puede usar SendTo incluso después de establecer un host remoto predeterminado con Connect. También puede cambiar el host remoto predeterminado antes de llamar Send mediante otra llamada a Connect.
Con un protocolo orientado a la conexión, Send se bloqueará hasta que se envíe el número solicitado de bytes, a menos que se establezca un tiempo de espera mediante Socket.SendTimeout. Si se superó el valor de tiempo de espera, la Send llamada producirá un SocketException. En el modo de no bloqueo, Send puede completarse correctamente incluso si envía menos del número de bytes que solicita. 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 eficacia de la red, el sistema subyacente puede retrasar la transmisión hasta que se recopile una cantidad significativa de datos salientes. Una finalización correcta del Send método significa que el sistema subyacente ha tenido espacio para almacenar en búfer los datos de un envío de red.
Nota:
Debe asegurarse de que el tamaño no supere el tamaño máximo del paquete del proveedor de servicios subyacente. Si lo hace, el datagrama no se enviará y Send generará un SocketException. 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.
Este miembro genera información de seguimiento al habilitar el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.
Importante
La finalización correcta de un envío no indica que los datos se entregaron correctamente. Si no hay ningún espacio de búfer disponible en el sistema de transporte para contener los datos que se van a transmitir, el envío se bloqueará a menos que el socket se haya colocado en modo de no bloqueo.
Consulte también
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Se aplica a
Send(IList<ArraySegment<Byte>>)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía el conjunto de búferes de la lista a un conectado 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 ArraySegment<T>Byte tipo que contiene los datos que se van a enviar.
Devoluciones
Número de bytes enviados a .Socket
Excepciones
buffers es null.
buffers está vacío.
Error al intentar acceder al socket. Consulte la sección de comentarios a continuación.
Se Socket ha cerrado.
Comentarios
Send se puede usar tanto para protocolos orientados a la conexión como sin conexión.
Esta sobrecarga requiere al menos un búfer que contenga los datos que desea enviar.
Si usa un protocolo sin conexión, debe llamar Connect a antes de llamar a este método o Send producirá una SocketExceptionexcepción . Si usa un protocolo orientado a la conexión, debe usar Connect para establecer una conexión de host remoto o usar Accept para aceptar una conexión entrante.
Si usa un protocolo sin conexión y tiene previsto enviar datos a varios hosts diferentes, debe usar el SendTo método . Si no usa el SendTo método , tendrá que llamar Connect a antes de cada llamada a Send. Puede usar SendTo incluso después de haber establecido un host remoto predeterminado con Connect. También puede cambiar el host remoto predeterminado antes de llamar Send mediante otra llamada a Connect.
Si usa un protocolo orientado a la conexión, Send se bloqueará hasta que se envíen todos los bytes del búfer, a menos que se establezca un tiempo de espera mediante Socket.SendTimeout. Si se superó el valor de tiempo de espera, la Send llamada producirá un SocketException. En el modo de no bloqueo, Send puede completarse correctamente incluso si envía menos del número de bytes en el búfer. 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 los bytes en el búfer. Tampoco hay ninguna garantía de que los datos que envíe aparecerán en la red inmediatamente. Para aumentar la eficacia de la red, el sistema subyacente puede retrasar la transmisión hasta que se recopile una cantidad significativa de datos salientes. Una finalización correcta del Send método significa que el sistema subyacente ha tenido espacio para almacenar en búfer los datos de un envío de red.
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:
La finalización correcta de un envío no indica que los datos se entregaron correctamente. Si no hay ningún espacio de búfer disponible en el sistema de transporte para contener los datos que se van a transmitir, el envío se bloqueará a menos que el socket se haya colocado en modo de no bloqueo.
Nota:
Este miembro genera información de seguimiento al habilitar el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.
Se aplica a
Send(IList<ArraySegment<Byte>>, SocketFlags)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía el conjunto de búferes de la lista a un conectado Socketmediante el especificado 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
Public Function Send (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Integer
Parámetros
- buffers
- IList<ArraySegment<Byte>>
Lista de ArraySegment<T>Byte tipo que contiene los datos que se van a enviar.
- socketFlags
- SocketFlags
Combinación bit a bit de los SocketFlags valores.
Devoluciones
Número de bytes enviados a .Socket
Excepciones
buffers es null.
buffers está vacío.
Error al intentar acceder al socket.
Se Socket ha cerrado.
Comentarios
Esta sobrecarga requiere al menos un búfer que contenga los datos que desea enviar. El SocketFlags valor predeterminado es 0. Si especifica la DontRoute marca como parámetro socketFlags , los datos que se envían no se enrutarán.
Si usa un protocolo sin conexión, debe llamar Connect a antes de llamar a este método o Send producirá una SocketExceptionexcepción . Si usa un protocolo orientado a la conexión, debe usar Connect para establecer una conexión de host remoto o usar Accept para aceptar una conexión entrante.
Si usa un protocolo sin conexión y tiene previsto enviar datos a varios hosts diferentes, debe usar el SendTo método . Si no usa el SendTo método , tendrá que llamar Connect a antes de cada llamada a Send. Puede usar SendTo incluso después de haber establecido un host remoto predeterminado con Connect. También puede cambiar el host remoto predeterminado antes de llamar Send mediante otra llamada a Connect.
Si usa un protocolo orientado a la conexión, Send se bloqueará hasta que se envíen todos los bytes del búfer, a menos que se establezca un tiempo de espera mediante Socket.SendTimeout. Si se superó el valor de tiempo de espera, la Send llamada producirá un SocketException. En modo de no bloqueo, Send puede completarse correctamente incluso si envía menos del número de bytes en el búfer. 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 los bytes en el búfer. Tampoco hay ninguna garantía de que los datos que envíe aparecerán en la red inmediatamente. Para aumentar la eficacia de la red, el sistema subyacente puede retrasar la transmisión hasta que se recopile una cantidad significativa de datos salientes. Una finalización correcta del Send método significa que el sistema subyacente ha tenido espacio para almacenar en búfer los datos de un envío de red.
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:
La finalización correcta de un envío no indica que los datos se entregaron correctamente. Si no hay ningún espacio de búfer disponible en el sistema de transporte para contener los datos que se van a transmitir, el envío se bloqueará a menos que el socket se haya colocado en modo de no bloqueo.
Nota:
Este miembro genera información de seguimiento al habilitar el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.
Se aplica a
Send(Byte[], SocketFlags)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía datos a un conectado Socket mediante el especificado 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
Public Function Send (buffer As Byte(), socketFlags As SocketFlags) As Integer
Parámetros
- socketFlags
- SocketFlags
Combinación bit a bit de los SocketFlags valores.
Devoluciones
Número de bytes enviados a .Socket
Excepciones
buffer es null.
Error al intentar acceder al socket.
Se Socket ha cerrado.
Ejemplos
En el ejemplo de código siguiente se muestra cómo enviar datos en un conectado Socket.
// 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 método o Accept y devuelve el número de bytes enviados correctamente. El Send método se puede usar para protocolos orientados a la conexión y sin conexión.
Esta sobrecarga requiere un búfer que contenga los datos que desea enviar y una combinación bit a bit de SocketFlags. El desplazamiento del búfer tiene como valor predeterminado 0 y el número de bytes para enviar valores predeterminados al tamaño del búfer. Si especifica la DontRoute marca como valor de socketflags parámetro, los datos que se envían no se enrutarán.
Si usa un protocolo sin conexión, debe llamar Connect a antes de llamar a este método o Send producirá una SocketExceptionexcepción . Si usa un protocolo orientado a la conexión, debe usar Connect para establecer una conexión de host remoto o usar Accept para aceptar una conexión entrante.
Si usa un protocolo sin conexión y tiene previsto enviar datos a varios hosts diferentes, debe usar el SendTo método . Si no usa el SendTo método , tendrá que llamar al Connect método antes de cada llamada a Send. Puede usar SendTo incluso después de haber establecido un host remoto predeterminado con Connect. También puede cambiar el host remoto predeterminado antes de llamar Send mediante otra llamada a Connect.
Si usa un protocolo orientado a la conexión, Send se bloqueará hasta que se envíen todos los bytes del búfer, a menos que se establezca un tiempo de espera mediante Socket.SendTimeout. Si se superó el valor de tiempo de espera, la Send llamada producirá un SocketException. En el modo de no bloqueo, Send puede completarse correctamente incluso si envía menos del número de bytes en el búfer. 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 eficacia de la red, el sistema subyacente puede retrasar la transmisión hasta que se recopile una cantidad significativa de datos salientes. Una finalización correcta del Send método significa que el sistema subyacente ha tenido espacio para almacenar en búfer los datos de un envío de red.
Nota:
Debe asegurarse de que el tamaño del búfer no supere el tamaño máximo del paquete del proveedor de servicios subyacente. Si lo hace, el datagrama no se enviará y Send producirá una SocketExceptionexcepción . Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.
Nota:
La finalización correcta de un envío no indica que los datos se entregaron correctamente. Si no hay ningún espacio de búfer disponible en el sistema de transporte para contener los datos que se van a transmitir, el envío se bloqueará a menos que el socket se haya colocado en modo de no bloqueo.
Nota:
Este miembro genera información de seguimiento al habilitar el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.
Consulte también
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Se aplica a
Send(ReadOnlySpan<Byte>, SocketFlags)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía datos a un conectado Socket mediante el especificado 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
Public Function Send (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags) 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 enumeración que especifica comportamientos de envío y recepción.
Devoluciones
Número de bytes enviados a .Socket
Excepciones
Error al intentar acceder al socket.
Se Socket ha cerrado.
Consulte también
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Se aplica a
Send(Byte[])
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envía datos a un conectado 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
Devoluciones
Número de bytes enviados a .Socket
Excepciones
buffer es null.
Error al intentar acceder al socket.
Se Socket ha cerrado.
Ejemplos
En el ejemplo de código siguiente se muestra cómo enviar datos en un conectado Socket.
// 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 método o Accept y devuelve el número de bytes enviados correctamente. Send se puede usar tanto para protocolos orientados a la conexión como sin conexión.
Esta sobrecarga requiere un búfer que contenga los datos que desea enviar. El SocketFlags valor predeterminado es 0, el desplazamiento del búfer tiene como valor predeterminado 0 y el número de bytes para enviar valores predeterminados al tamaño del búfer.
Si usa un protocolo sin conexión, debe llamar Connect a antes de llamar a este método o Send producirá una SocketExceptionexcepción . Si usa un protocolo orientado a la conexión, debe usar Connect para establecer una conexión de host remoto o usar Accept para aceptar una conexión entrante.
Si usa un protocolo sin conexión y tiene previsto enviar datos a varios hosts diferentes, debe usar el SendTo método . Si no usa el SendTo método , tendrá que llamar Connect a antes de cada llamada a Send. Puede usar SendTo incluso después de haber establecido un host remoto predeterminado con Connect. También puede cambiar el host remoto predeterminado antes de llamar Send mediante otra llamada a Connect.
Si usa un protocolo orientado a la conexión, Send se bloqueará hasta que se envíen todos los bytes del búfer, a menos que se establezca un tiempo de espera mediante Socket.SendTimeout. Si se superó el valor de tiempo de espera, la Send llamada producirá un SocketException. En el modo de no bloqueo, Send puede completarse correctamente incluso si envía menos del número de bytes en el búfer. 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 los bytes en el búfer. Tampoco hay ninguna garantía de que los datos que envíe aparecerán en la red inmediatamente. Para aumentar la eficacia de la red, el sistema subyacente puede retrasar la transmisión hasta que se recopile una cantidad significativa de datos salientes. Una finalización correcta del Send método significa que el sistema subyacente ha tenido espacio para almacenar en búfer los datos de un envío de red.
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:
La finalización correcta de un envío no indica que los datos se entregaron correctamente. Si no hay ningún espacio de búfer disponible en el sistema de transporte para contener los datos que se van a transmitir, el envío se bloqueará a menos que el socket se haya colocado en modo de no bloqueo.
Nota:
Este miembro genera información de seguimiento al habilitar el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.
Consulte también
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)