Socket.BeginSendTo Méthode

Définition

Envoie des données de façon asynchrone à un hôte distant spécifique.

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

Paramètres

buffer
Byte[]

Tableau de type Byte qui contient les données à envoyer.

offset
Int32

Position de base zéro dans buffer à laquelle commencer l'envoi des données.

size
Int32

Le nombre d’octets à envoyer.

socketFlags
SocketFlags

Combinaison d’opérations de bits des valeurs SocketFlags.

remoteEP
EndPoint

EndPoint qui représente l’appareil distant.

callback
AsyncCallback

Délégué AsyncCallback.

state
Object

Objet qui contient les informations d’état de cette demande.

Retours

IAsyncResult qui fait référence à l'envoi asynchrone.

Exceptions

buffer a la valeur null.

-ou-

remoteEP a la valeur null.

.NET Framework et .NET 5 et versions antérieures uniquement : une erreur s’est produite lors de la tentative d’accès au socket.

offset est inférieur à 0.

- ou -

offset est supérieur à la longueur de buffer.

- ou -

size est inférieur à 0.

- ou -

size est supérieur à la longueur de buffer moins la valeur du paramètre offset .

Un appelant situé plus haut dans la pile des appels n’a pas l’autorisation pour l’opération demandée.

Remarques

Important

Il s’agit d’une API de compatibilité. Nous vous déconseillons d’utiliser les méthodes APM (Begin* et End*) pour le nouveau développement. Au lieu de cela, utilisez les Taskéquivalents basés sur la base.

Vous pouvez passer un rappel qui s’implémente AsyncCallbackBeginSendTo à afin d’être informé de la fin de l’opération. Notez que si la pile réseau sous-jacente termine l’opération de manière synchrone, le rappel sera exécuté en ligne, pendant l’appel à BeginSendTo. Dans ce cas, la CompletedSynchronously propriété sur le retourné IAsyncResult sera définie sur pour true indiquer que la méthode s’est terminée de manière synchrone. Utilisez la AsyncState propriété de IAsyncResult pour obtenir l’objet d’état passé à la BeginSendTo méthode .

L’opération BeginSendTo doit être terminée en appelant la EndSendTo méthode . En règle générale, la méthode est appelée par le délégué fourni AsyncCallback . EndSendTo bloque le thread appelant jusqu’à ce que l’opération soit terminée.

Si vous utilisez un protocole orienté connexion, vous devez d’abord appeler la Connectméthode , BeginConnect, Acceptou BeginAccept , ou BeginSendTo lèvera un SocketException. BeginSendTo ignore le remoteEP paramètre et envoie des données à la EndPoint méthode établie dans la Connectméthode , BeginConnect, Acceptou BeginAccept .

Si vous utilisez un protocole sans connexion, vous n’avez pas besoin d’établir un hôte distant par défaut avec la Connect méthode ou BeginConnect avant d’appeler SendTo. Vous n’avez besoin de le faire que si vous avez l’intention d’appeler la BeginSend méthode. Si vous appelez la Connect méthode ou BeginConnect avant d’appeler SendTo, le remoteEP paramètre remplacera l’hôte distant par défaut spécifié pour cette opération d’envoi uniquement. Vous n’êtes pas non plus obligé d’appeler la Bind méthode. Dans ce cas, le fournisseur de services sous-jacent attribue l’adresse réseau locale et le numéro de port les plus appropriés. Utilisez un numéro de port de zéro si vous souhaitez que le fournisseur de services sous-jacent sélectionne un port gratuit. Si vous devez identifier l’adresse de réseau local et le numéro de port attribués, vous pouvez utiliser la LocalEndPoint propriété une fois la EndSendTo méthode terminée.

Si vous souhaitez envoyer des données à une adresse de diffusion, vous devez d’abord appeler la SetSocketOption méthode et définir l’option de socket sur SocketOptionName.Broadcast. -Vous devez également être sûr que la taille de votre mémoire tampon ne dépasse pas la taille de paquet maximale du fournisseur de services sous-jacent. Si c’est le cas, le datagramme n’est pas envoyé et EndSendTo lève un SocketException.

Si vous spécifiez l’indicateur DontRoute comme socketflags paramètre, les données que vous envoyez ne seront pas routées.

Notes

Si vous recevez un SocketException, utilisez la SocketException.ErrorCode propriété pour obtenir le code d’erreur spécifique. Une fois ce code obtenu, reportez-vous à la documentation du code d’erreur de l’API Windows Sockets version 2 pour obtenir une description détaillée de l’erreur.

Notes

Ce membre génère des informations de traçage lorsque vous activez le traçage réseau dans votre application. Pour plus d’informations, consultez Suivi réseau dans .NET Framework.

Notes

Le contexte d’exécution (le contexte de sécurité, l’utilisateur usurpé et le contexte appelant) est mis en cache pour les méthodes asynchrones Socket . Après la première utilisation d’un contexte particulier (une méthode asynchrone Socket spécifique, un instance spécifique Socket et un rappel spécifique), les utilisations ultérieures de ce contexte voient une amélioration des performances.

S’applique à

Voir aussi