Partage via


Socket.BeginSendTo Méthode

Définition

Envoie des données de manière 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 de données.

size
Int32

Nombre d’octets à envoyer.

socketFlags
SocketFlags

Combinaison au niveau du bit des SocketFlags valeurs.

remoteEP
EndPoint

Qui EndPoint représente l’appareil distant.

callback
AsyncCallback

Délégué AsyncCallback .

state
Object

Objet qui contient des informations d’état pour cette requête.

Retours

Qui IAsyncResult 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 offset paramètre.

Il Socket a été fermé.

Un appelant 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. Utilisez plutôt les Taskéquivalents basés sur les valeurs.

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

L’opération BeginSendTo doit être effectué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 le Connect, , AcceptBeginConnectou BeginAccept la méthode, ou BeginSendTo lève un SocketException. BeginSendToignore le remoteEP paramètre et envoie les données à l’établissement EndPoint dans le Connect, BeginConnectou AcceptBeginAccept la méthode.

Si vous utilisez un protocole sans connexion, vous n’avez pas besoin d’établir un hôte distant par défaut avec la ou BeginConnect la Connect méthode avant d’appeler SendTo. Vous n’avez besoin de le faire que si vous envisagez d’appeler la BeginSend méthode. Si vous appelez le ou BeginConnect la Connect méthode avant d’appelerSendTo, le remoteEP paramètre remplace l’hôte distant par défaut spécifié pour cette opération d’envoi uniquement. Vous n’êtes pas également obligé d’appeler la Bind méthode. Dans ce cas, le fournisseur de services sous-jacent affecte 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 SocketOptionName.Broadcastde socket sur . -Vous devez également vous assurer que la taille de votre mémoire tampon ne dépasse pas la taille maximale des paquets du fournisseur de services sous-jacent. Si c’est le cas, le datagramme ne sera 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.

Note

Si vous recevez un SocketException, utilisez la SocketException.ErrorCode propriété pour obtenir le code d’erreur spécifique. Une fois que vous avez obtenu ce code, 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.

Note

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

Note

Le contexte d’exécution (le contexte de sécurité, l’utilisateur emprunt d’identité 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, une instance spécifique et un rappel spécifique Socket ), les utilisations suivantes de ce contexte verront une amélioration des performances.

S’applique à

Voir aussi