Socket.BeginSendTo Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- 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.
- 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
.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
.
Socket a été fermé.
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.