Socket.SendToAsync Método

Definición

Sobrecargas

SendToAsync(SocketAsyncEventArgs)

Envía datos de forma asincrónica a un host remoto concreto.

SendToAsync(ArraySegment<Byte>, EndPoint)

Envía datos al host remoto especificado.

SendToAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

Envía datos al host remoto especificado.

SendToAsync(ReadOnlyMemory<Byte>, EndPoint, CancellationToken)

Envía datos al host remoto especificado.

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, EndPoint, CancellationToken)

Envía datos al host remoto especificado.

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, SocketAddress, CancellationToken)

Envía datos a un extremo específico mediante el marcador SocketFlags especificado.

SendToAsync(SocketAsyncEventArgs)

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

Envía datos de forma asincrónica a un host remoto concreto.

public:
 bool SendToAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendToAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendToAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendToAsync (e As SocketAsyncEventArgs) As Boolean

Parámetros

e
SocketAsyncEventArgs

Objeto SocketAsyncEventArgs que se usa para esta operación de socket asincrónica.

Devoluciones

Devuelve true si la operación de E/S está pendiente. Al completar la operación se provoca el evento Completed del parámetro e.

Devuelve false si la operación de E/S se ha completado de forma sincrónica. En ese caso, el evento Completed del parámetro e no se provoca y el objeto e que se pasa como parámetro puede examinarse inmediatamente después de que se devuelva la llamada al método para recuperar el resultado de la operación.

Excepciones

Ya hay una operación de socket en curso que utiliza el objeto SocketAsyncEventArgs especificado en el parámetro e.

El Socket se ha cerrado.

El protocolo especificado está orientado a la conexión, pero el Socket no está conectado todavía.

Comentarios

El SendToAsync método inicia una operación de envío asincrónica al host remoto especificado en la SocketAsyncEventArgs.RemoteEndPoint propiedad del e parámetro . Llamar al SendToAsync método le permite enviar datos dentro de un subproceso de ejecución independiente. Aunque este método está pensado para protocolos sin conexión, SendToAsync funciona con protocolos sin conexión y orientados a conexiones.

Para recibir una notificación de finalización, debe crear un método de devolución de llamada que implemente el delegado EventHandler<SocketAsyncEventArgs> y adjunte la devolución de llamada al SocketAsyncEventArgs.Completed evento.

Se requieren las siguientes propiedades y eventos en el System.Net.Sockets.SocketAsyncEventArgs objeto para llamar correctamente a este método:

El autor de la llamada puede establecer la SocketAsyncEventArgs.UserToken propiedad en cualquier objeto de estado de usuario deseado antes de llamar al SendToAsync método , de modo que la información se pueda recuperar en el método de devolución de llamada. Si la devolución de llamada necesita más información que un único objeto, se puede crear una clase pequeña para contener la otra información de estado necesaria como miembros.

Si usa un protocolo orientado a la conexión, primero debe llamar al Acceptmétodo , AcceptAsync, BeginAcceptBeginConnect, , Connecto ConnectAsync . De lo contrario SendToAsync , producirá una SocketExceptionexcepción . Cuando se usa un protocolo orientado a la conexión, el SendToAsync método omitirá la SocketAsyncEventArgs.RemoteEndPoint propiedad y enviará datos al System.Net.EndPoint objeto establecido en el Acceptmétodo , AcceptAsync, BeginAccept, BeginConnect, Connecto ConnectAsync .

Si usa un protocolo sin conexión, no es necesario establecer un host remoto predeterminado con el BeginConnectmétodo , Connecto ConnectAsync antes de llamar SendToAsynca . Solo tiene que hacerlo si piensa llamar a los BeginSend métodos o SendAsync . Si llama al BeginConnectmétodo , Connecto ConnectAsync antes de llamar SendToAsynca , la SocketAsyncEventArgs.RemoteEndPoint propiedad invalidará el host remoto predeterminado especificado para esa operación de envío. Tampoco es necesario llamar al Bind método . En este caso, el proveedor de servicios subyacente asignará la dirección IP de red local y el número de puerto más adecuados. Use un número de puerto de cero si desea que el proveedor de servicios subyacente seleccione un puerto libre. Si necesita identificar la dirección IP de red local asignada y el número de puerto, puede usar la LocalEndPoint propiedad después de que se señale el SocketAsyncEventArgs.Completed evento y se llame a los delegados asociados.

Si desea enviar datos a una dirección de difusión, primero debe llamar al SetSocketOption método y establecer la opción de socket para en SocketOptionName.Broadcast true. 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 SendToAsync producirá una SocketExceptionexcepción .

Si especifica la marca DontRoute en la SocketAsyncEventArgs.SocketFlags propiedad , los datos que envía no se enrutarán.

En el caso de los sockets orientados a mensajes, se debe tener cuidado de no superar el tamaño máximo del mensaje del transporte subyacente. Si el tamaño del búfer supera el tamaño máximo del paquete del proveedor de servicios subyacente, el datagrama no se envía y SendToAsync producirá una SocketExceptionexcepción . La finalización correcta de un SendToAsync método no indica que los datos se entregaron correctamente.

Consulte también

Se aplica a

SendToAsync(ArraySegment<Byte>, EndPoint)

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

Envía datos al host remoto especificado.

public:
 System::Threading::Tasks::Task<int> ^ SendToAsync(ArraySegment<System::Byte> buffer, System::Net::EndPoint ^ remoteEP);
public System.Threading.Tasks.Task<int> SendToAsync (ArraySegment<byte> buffer, System.Net.EndPoint remoteEP);
member this.SendToAsync : ArraySegment<byte> * System.Net.EndPoint -> System.Threading.Tasks.Task<int>
Public Function SendToAsync (buffer As ArraySegment(Of Byte), remoteEP As EndPoint) As Task(Of Integer)

Parámetros

buffer
ArraySegment<Byte>

Búfer de los datos que se van a enviar.

remoteEP
EndPoint

Host remoto al que se van a enviar los datos.

Devoluciones

Tarea asincrónica que se completa con el número de bytes enviados.

Excepciones

remoteEP es null.

Error al intentar acceder al socket.

El Socket se ha cerrado.

Se aplica a

SendToAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

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

Envía datos al host remoto especificado.

public:
 System::Threading::Tasks::Task<int> ^ SendToAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public System.Threading.Tasks.Task<int> SendToAsync (ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendToAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> System.Threading.Tasks.Task<int>
Public Function SendToAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint) As Task(Of Integer)

Parámetros

buffer
ArraySegment<Byte>

Búfer de los datos que se van a enviar.

socketFlags
SocketFlags

Combinación bit a bit de valores SocketFlags que se usarán al enviar los datos.

remoteEP
EndPoint

Host remoto al que se van a enviar los datos.

Devoluciones

Tarea asincrónica que se completa con el número de bytes enviados.

Excepciones

remoteEP es null.

Error al intentar acceder al socket.

El Socket se ha cerrado.

Se aplica a

SendToAsync(ReadOnlyMemory<Byte>, EndPoint, CancellationToken)

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

Envía datos al host remoto especificado.

public System.Threading.Tasks.ValueTask<int> SendToAsync (ReadOnlyMemory<byte> buffer, System.Net.EndPoint remoteEP, System.Threading.CancellationToken cancellationToken = default);
member this.SendToAsync : ReadOnlyMemory<byte> * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendToAsync (buffer As ReadOnlyMemory(Of Byte), remoteEP As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

Parámetros

buffer
ReadOnlyMemory<Byte>

Búfer de los datos que se van a enviar.

remoteEP
EndPoint

Host remoto al que se van a enviar los datos.

cancellationToken
CancellationToken

Token de cancelación que se puede usar para cancelar la operación asincrónica.

Devoluciones

Tarea asincrónica que se completa con el número de bytes enviados.

Excepciones

remoteEP es null.

Error al intentar acceder al socket.

El Socket se ha cerrado.

Se canceló el token de cancelación. Esta excepción se almacena en la tarea devuelta.

Se aplica a

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, EndPoint, CancellationToken)

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

Envía datos al host remoto especificado.

public System.Threading.Tasks.ValueTask<int> SendToAsync (ReadOnlyMemory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, System.Threading.CancellationToken cancellationToken = default);
member this.SendToAsync : ReadOnlyMemory<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendToAsync (buffer As ReadOnlyMemory(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

Parámetros

buffer
ReadOnlyMemory<Byte>

Búfer de los datos que se van a enviar.

socketFlags
SocketFlags

Combinación bit a bit de valores SocketFlags que se usarán al enviar los datos.

remoteEP
EndPoint

Host remoto al que se van a enviar los datos.

cancellationToken
CancellationToken

Token de cancelación que se puede usar para cancelar la operación asincrónica.

Devoluciones

Tarea asincrónica que se completa con el número de bytes enviados.

Excepciones

remoteEP es null.

Error al intentar acceder al socket.

El Socket se ha cerrado.

Se canceló el token de cancelación. Esta excepción se almacena en la tarea devuelta.

Se aplica a

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, SocketAddress, CancellationToken)

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

Envía datos a un extremo específico mediante el marcador SocketFlags especificado.

public System.Threading.Tasks.ValueTask<int> SendToAsync (ReadOnlyMemory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.SocketAddress socketAddress, System.Threading.CancellationToken cancellationToken = default);
member this.SendToAsync : ReadOnlyMemory<byte> * System.Net.Sockets.SocketFlags * System.Net.SocketAddress * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendToAsync (buffer As ReadOnlyMemory(Of Byte), socketFlags As SocketFlags, socketAddress As SocketAddress, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

Parámetros

buffer
ReadOnlyMemory<Byte>

Búfer de los datos que se van a enviar.

socketFlags
SocketFlags

Combinación bit a bit de SocketFlags valores que se usarán al enviar los datos.

socketAddress
SocketAddress

SocketAddress que representa el destino de los datos.

cancellationToken
CancellationToken

Token de cancelación que se puede usar para cancelar la operación asincrónica.

Devoluciones

Tarea asincrónica que se completa con el número de bytes enviados.

Excepciones

socketAddress es null.

Error al intentar acceder al socket.

El Socket se ha cerrado.

Se canceló el token de cancelación. Esta excepción se almacena en la tarea devuelta.

Se aplica a