Compartir a través de


Socket.BeginSend Método

Definición

Envía datos asincrónicamente a un objeto Socket conectado.

Sobrecargas

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

Envía datos asincrónicamente a un objeto Socket conectado.

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

Envía datos asincrónicamente a un objeto Socket conectado.

BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

Envía datos asincrónicamente a un objeto Socket conectado.

BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

Envía datos asincrónicamente a un objeto Socket conectado.

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Envía datos asincrónicamente a un objeto Socket conectado.

public:
 IAsyncResult ^ BeginSend(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginSend : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult

Parámetros

buffers
IList<ArraySegment<Byte>>

Matriz de tipo Byte que contiene los datos que se enviarán.

socketFlags
SocketFlags

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

callback
AsyncCallback

Delegado AsyncCallback.

state
Object

Objeto que contiene la información de estado para esta solicitud.

Devoluciones

IAsyncResult que hace referencia al envío asincrónico.

Excepciones

buffers es null.

buffers está vacía.

Solo .NET Framework y .NET 5 y versiones anteriores: se produjo un error al intentar acceder al socket. Vea la sección de comentarios que figura más abajo.

El Socket se ha cerrado.

Comentarios

Importante

Se trata de una API de compatibilidad. No se recomienda usar los métodos de APM (Begin* y End*) para el nuevo desarrollo. En su lugar, use los Taskequivalentes basados en .

Puede pasar una devolución de llamada que se implemente AsyncCallbackBeginSend en para recibir una notificación sobre la finalización de la operación. Tenga en cuenta que si la pila de red subyacente completa la operación de forma sincrónica, la devolución de llamada se ejecutará en línea durante la llamada a BeginSend. En este caso, la CompletedSynchronously propiedad del devuelto IAsyncResult se establecerá en true para indicar que el método se completó de forma sincrónica. Utilice la AsyncState propiedad de para obtener el objeto de IAsyncResult estado pasado al BeginSend método .

La operación asincrónica BeginSend debe completarse llamando al EndSend método . Normalmente, el delegado invoca el AsyncCallback método . EndSend bloqueará el subproceso que realiza la llamada hasta que se complete la operación.

Aunque está pensado para protocolos orientados a la conexión, BeginSend también funciona para protocolos sin conexión, siempre que primero llame al Connect método o BeginConnect para establecer un host remoto predeterminado. Si usa un protocolo sin conexión y tiene previsto enviar datos a varios hosts diferentes, debe usar BeginSendTo. Está bien usar BeginSendTo incluso después de haber establecido un host remoto predeterminado con Connect. También puede cambiar el host remoto predeterminado antes de llamar BeginSend mediante otra llamada a Connect o BeginConnect. Con los protocolos sin conexión, también 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 BeginSend generará un SocketException.

Si especifica la DontRoute marca como socketflags parámetro , los datos que va a enviar no se enrutarán.

Nota

Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico.

Nota

Todas las E/S iniciadas por un subproceso determinado se cancelan cuando se cierra ese subproceso. Se puede producir un error en una operación asincrónica pendiente si el subproceso sale antes de que se complete la operación.

Nota

state es una instancia de una clase definida por el usuario.

Nota

La finalización correcta de un envío no indica que los datos se entregaron correctamente. Si no hay espacio en 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 cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.

Nota

El contexto de ejecución (el contexto de seguridad, el usuario suplantado y el contexto de llamada) se almacena en caché para los métodos asincrónicos Socket . Después del primer uso de un contexto determinado (un método asincrónico Socket específico, una instancia específica Socket y una devolución de llamada específica), los usos posteriores de ese contexto verán una mejora del rendimiento.

Consulte también

Se aplica a

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Envía datos asincrónicamente a un objeto Socket conectado.

public:
 IAsyncResult ^ BeginSend(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginSend : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult

Parámetros

buffers
IList<ArraySegment<Byte>>

Matriz de tipo Byte que contiene los datos que se enviarán.

socketFlags
SocketFlags

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

errorCode
SocketError

Objeto SocketError que almacena el error de socket.

callback
AsyncCallback

Delegado AsyncCallback.

state
Object

Objeto que contiene la información de estado para esta solicitud.

Devoluciones

IAsyncResult que hace referencia al envío asincrónico.

Excepciones

buffers es null.

buffers está vacía.

Solo .NET Framework y .NET 5 y versiones anteriores: se produjo un error al intentar acceder al socket. Vea la sección de comentarios que figura más abajo.

El Socket se ha cerrado.

Comentarios

Importante

Se trata de una API de compatibilidad. No se recomienda usar los métodos de APM (Begin* y End*) para el nuevo desarrollo. En su lugar, use los Taskequivalentes basados en .

Puede pasar una devolución de llamada que se implemente AsyncCallbackBeginSend en para recibir una notificación sobre la finalización de la operación. Tenga en cuenta que si la pila de red subyacente completa la operación de forma sincrónica, la devolución de llamada se ejecutará en línea durante la llamada a BeginSend. En este caso, la CompletedSynchronously propiedad del devuelto IAsyncResult se establecerá en true para indicar que el método se completó de forma sincrónica. Utilice la AsyncState propiedad de para obtener el objeto de IAsyncResult estado pasado al BeginSend método .

La operación asincrónica BeginSend debe completarse llamando al EndSend método . Normalmente, el delegado invoca el AsyncCallback método . EndSend bloqueará el subproceso que realiza la llamada hasta que se complete la operación.

Aunque está pensado para protocolos orientados a la conexión, BeginSend también funciona para protocolos sin conexión, siempre que primero llame al Connect método o BeginConnect para establecer un host remoto predeterminado. Si usa un protocolo sin conexión y tiene previsto enviar datos a varios hosts diferentes, debe usar BeginSendTo. Está bien usar BeginSendTo incluso después de haber establecido un host remoto predeterminado con Connect. También puede cambiar el host remoto predeterminado antes de llamar BeginSend mediante otra llamada a Connect o BeginConnect. Con los protocolos sin conexión, también 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 BeginSend generará un SocketException.

Si especifica la DontRoute marca como socketflags parámetro , los datos que va a enviar no se enrutarán.

Nota

Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico.

Nota

Todas las E/S iniciadas por un subproceso determinado se cancelan cuando se cierra ese subproceso. Se puede producir un error en una operación asincrónica pendiente si el subproceso sale antes de que se complete la operación.

Nota

state es una instancia de una clase definida por el usuario.

Nota

La finalización correcta de un envío no indica que los datos se entregaron correctamente. Si no hay espacio en 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 cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.

Nota

El contexto de ejecución (el contexto de seguridad, el usuario suplantado y el contexto de llamada) se almacena en caché para los métodos asincrónicos Socket . Después del primer uso de un contexto determinado (un método asincrónico Socket específico, una instancia específica Socket y una devolución de llamada específica), los usos posteriores de ese contexto verán una mejora del rendimiento.

Consulte también

Se aplica a

BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Envía datos asincrónicamente a un objeto Socket conectado.

public:
 IAsyncResult ^ BeginSend(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginSend : byte[] * int * int * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult

Parámetros

buffer
Byte[]

Matriz de tipo Byte que contiene los datos que se enviarán.

offset
Int32

Posición de base cero del parámetro buffer donde se empezará a enviar los datos.

size
Int32

Número de bytes para enviar.

socketFlags
SocketFlags

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

callback
AsyncCallback

Delegado AsyncCallback.

state
Object

Objeto que contiene la información de estado para esta solicitud.

Devoluciones

IAsyncResult que hace referencia al envío asincrónico.

Excepciones

buffer es null.

Solo .NET Framework y .NET 5 y versiones anteriores: se produjo un error al intentar acceder al socket. Vea la sección de comentarios que figura más abajo.

offset es menor que 0.

o bien

offset es menor que la longitud de buffer.

o bien

size es menor que 0.

o bien

size es mayor que la longitud de buffer menos el valor del parámetro offset .

El Socket se ha cerrado.

Comentarios

Importante

Se trata de una API de compatibilidad. No se recomienda usar los métodos de APM (Begin* y End*) para el nuevo desarrollo. En su lugar, use los Taskequivalentes basados en .

Puede pasar una devolución de llamada que se AsyncCallbackBeginSend implemente en para recibir una notificación sobre la finalización de la operación. Tenga en cuenta que si la pila de red subyacente completa la operación de forma sincrónica, la devolución de llamada se ejecutará en línea, durante la llamada a BeginSend. En este caso, la CompletedSynchronously propiedad del devuelto IAsyncResult se establecerá true en para indicar que el método se completó sincrónicamente. Utilice la AsyncState propiedad de IAsyncResult para obtener el objeto de estado pasado al BeginSend método .

La operación asincrónica BeginSend debe completarse llamando al EndSend método . Normalmente, el delegado invoca el AsyncCallback método . EndSend bloqueará el subproceso que realiza la llamada hasta que se complete la operación.

Aunque está pensado para protocolos orientados a la conexión, BeginSend también funciona para protocolos sin conexión, siempre que primero llame Connect al método o BeginConnect para establecer un host remoto predeterminado. Si usa un protocolo sin conexión y tiene previsto enviar datos a varios hosts diferentes, debe usar BeginSendTo. Está bien usar BeginSendTo incluso después de haber establecido un host remoto predeterminado con Connect. También puede cambiar el host remoto predeterminado antes de llamar BeginSend mediante otra llamada a Connect o BeginConnect. Con los protocolos sin conexión, también 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 es así, el datagrama no se enviará y BeginSend producirá una SocketExceptionexcepción .

Si especifica la DontRoute marca como parámetro socketflags , los datos que envía no se enrutarán.

Nota

Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico.

Nota

Todas las E/S iniciadas por un subproceso determinado se cancelan cuando se cierra ese subproceso. Se puede producir un error en una operación asincrónica pendiente si el subproceso sale antes de que se complete la operación.

Nota

state es una instancia de una clase definida por el usuario.

Nota

La finalización correcta de un envío no indica que los datos se entregaron correctamente. Si no hay 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 cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, vea Seguimiento de red en .NET Framework.

Nota

El contexto de ejecución (el contexto de seguridad, el usuario suplantado y el contexto de llamada) se almacena en caché para los métodos asincrónicos Socket . Después del primer uso de un contexto determinado (un método asincrónico Socket específico, una instancia específica Socket y una devolución de llamada específica), los usos posteriores de ese contexto verán una mejora del rendimiento.

Consulte también

Se aplica a

BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Envía datos asincrónicamente a un objeto Socket conectado.

public:
 IAsyncResult ^ BeginSend(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginSend : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult

Parámetros

buffer
Byte[]

Matriz de tipo Byte que contiene los datos que se enviarán.

offset
Int32

Posición de base cero del parámetro buffer donde se empezará a enviar los datos.

size
Int32

Número de bytes para enviar.

socketFlags
SocketFlags

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

errorCode
SocketError

Objeto SocketError que almacena el error de socket.

callback
AsyncCallback

Delegado AsyncCallback.

state
Object

Objeto que contiene la información de estado para esta solicitud.

Devoluciones

IAsyncResult que hace referencia al envío asincrónico.

Excepciones

buffer es null.

Solo .NET Framework y .NET 5 y versiones anteriores: se produjo un error al intentar acceder al socket. Vea la sección de comentarios que figura más abajo.

offset es menor que 0.

o bien

offset es menor que la longitud de buffer.

o bien

size es menor que 0.

o bien

size es mayor que la longitud de buffer menos el valor del parámetro offset .

El Socket se ha cerrado.

Comentarios

Importante

Se trata de una API de compatibilidad. No se recomienda usar los métodos de APM (Begin* y End*) para el nuevo desarrollo. En su lugar, use los Taskequivalentes basados en .

Puede pasar una devolución de llamada que se AsyncCallbackBeginSend implemente en para recibir una notificación sobre la finalización de la operación. Tenga en cuenta que si la pila de red subyacente completa la operación de forma sincrónica, la devolución de llamada se ejecutará en línea, durante la llamada a BeginSend. En este caso, la CompletedSynchronously propiedad del devuelto IAsyncResult se establecerá true en para indicar que el método se completó sincrónicamente. Utilice la AsyncState propiedad de IAsyncResult para obtener el objeto de estado pasado al BeginSend método .

La operación asincrónica BeginSend debe completarse llamando al EndSend método . Normalmente, el delegado invoca el AsyncCallback método . EndSend bloqueará el subproceso que realiza la llamada hasta que se complete la operación.

Aunque está pensado para protocolos orientados a la conexión, BeginSend también funciona para protocolos sin conexión, siempre que primero llame Connect al método o BeginConnect para establecer un host remoto predeterminado. Si usa un protocolo sin conexión y tiene previsto enviar datos a varios hosts diferentes, debe usar BeginSendTo. Está bien usar BeginSendTo incluso después de haber establecido un host remoto predeterminado con Connect. También puede cambiar el host remoto predeterminado antes de llamar BeginSend mediante otra llamada a Connect o BeginConnect. Con los protocolos sin conexión, también 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 es así, el datagrama no se enviará y BeginSend producirá una SocketExceptionexcepción .

Si especifica la DontRoute marca como parámetro socketflags , los datos que envía no se enrutarán.

Nota

Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico.

Nota

Todas las E/S iniciadas por un subproceso determinado se cancelan cuando se cierra ese subproceso. Se puede producir un error en una operación asincrónica pendiente si el subproceso sale antes de que se complete la operación.

Nota

state es una instancia de una clase definida por el usuario.

Nota

La finalización correcta de un envío no indica que los datos se entregaron correctamente. Si no hay espacio en 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 cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.

Nota

El contexto de ejecución (el contexto de seguridad, el usuario suplantado y el contexto de llamada) se almacena en caché para los métodos asincrónicos Socket . Después del primer uso de un contexto determinado (un método asincrónico Socket específico, una instancia específica Socket y una devolución de llamada específica), los usos posteriores de ese contexto verán una mejora del rendimiento.

Consulte también

Se aplica a