Partage via


Socket.SendPacketsAsync(SocketAsyncEventArgs) Méthode

Définition

Envoie une collection de fichiers ou des données mises en mémoire tampon de façon asynchrone à un objet Socket connecté.

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

Paramètres

e
SocketAsyncEventArgs

Objet SocketAsyncEventArgs à utiliser pour cette opération de socket asynchrone.

Retours

true si l’opération d’E/S est en attente. L'événement Completed sur le paramètre e sera déclenché une fois l'opération terminée.

false si l’opération d’E/S a été terminée de manière synchrone. Dans ce cas, l'événement Completed sur le paramètre e ne sera pas déclenché et l'objet e transmis en tant que paramètre peut être examiné immédiatement après que l'appel de méthode a été retourné pour extraire le résultat de l'opération.

Exceptions

Le fichier spécifié dans la propriété FilePath est introuvable.

Une opération de socket utilisant l'objet SocketAsyncEventArgs spécifié dans le paramètre e spécifié était déjà en cours.

Socket n'est pas connecté à un hôte distant.

Un Socket sans connexion est utilisé et le fichier qui est envoyé dépasse la taille maximale du paquet du transport sous-jacent.

Remarques

La SendPacketsAsync méthode est utilisée pour envoyer une collection de fichiers ou des mémoires tampons de données mémoire à l’hôte distant. Le Socket doit déjà être connecté à l’hôte distant.

Si un System.Net.Sockets.SendPacketsElement fait référence à un fichier dans le répertoire de travail, il peut être identifié uniquement par le nom du fichier ; sinon, le chemin d’accès complet et le nom du fichier doivent être spécifiés. Les caractères génériques et les noms de partage UNC sont pris en charge. Si le fichier est introuvable, FileNotFoundException est levée.

Pour être averti de l’achèvement, vous devez créer une méthode de rappel qui implémente le délégué EventHandler<SocketAsyncEventArgs> et attacher le rappel à l’événement SocketAsyncEventArgs.Completed .

La SocketAsyncEventArgs.SendPacketsFlags propriété sur le e paramètre fournit au fournisseur de services Windows Sockets des informations supplémentaires sur le transfert de fichiers. Pour plus d’informations sur l’utilisation de ce paramètre, consultez TransmitFileOptions.

Les propriétés et événements suivants sur l’objet System.Net.Sockets.SocketAsyncEventArgs sont nécessaires pour appeler correctement cette méthode :

L’appelant peut définir la SocketAsyncEventArgs.UserToken propriété sur n’importe quel objet d’état utilisateur souhaité avant d’appeler la SendPacketsAsync méthode, afin que les informations soient récupérables dans la méthode de rappel. Si le rappel a besoin de plus d’informations qu’un seul objet, une petite classe peut être créée pour contenir les autres informations d’état requises en tant que membres.

Cette méthode utilise la fonction TransmitPackets qui se trouve dans l’API Windows Sockets 2. Pour plus d’informations sur la fonction TransmitPackets et ses indicateurs, consultez la documentation Windows Sockets .

Bien qu’elle soit destinée aux protocoles orientés connexion, la SendPacketsAsync méthode fonctionne également pour les protocoles sans connexion, à condition que vous appeliez d’abord la BeginConnectméthode , Connectou ConnectAsync pour établir un hôte distant par défaut. Avec les protocoles sans connexion, vous devez également vous assurer que la taille de votre fichier ne dépasse pas la taille maximale des paquets du fournisseur de services sous-jacent. Si c’est le cas, le datagramme n’est pas envoyé et SendPacketsAsync lève une SocketException exception.

La SendPacketsAsync méthode est optimisée en fonction du système d’exploitation sur lequel elle est utilisée. Sur les éditions de Windows Server, la SendPacketsAsync méthode est optimisée pour des performances élevées.

Sur les éditions clientes Windows, la SendPacketsAsync méthode est optimisée pour une utilisation minimale de la mémoire et des ressources.

L’utilisation de l’indicateur TransmitFileOptions.UseKernelApc dans la SocketAsyncEventArgs.SendPacketsFlags propriété sur le e paramètre peut offrir des avantages significatifs en matière de performances. Si le thread à l’origine de l’appel SendPacketsAsync de méthode est utilisé pour des calculs lourds, il est possible, bien que peu probable, que le lancement des API puisse être empêché. Notez qu’il existe une différence entre les API en mode noyau et en mode utilisateur. Les API du noyau sont lancées lorsqu’un thread est en état d’attente. Lancement des API en mode utilisateur lorsqu’un thread est dans un état d’attente pouvant être alerté

S’applique à

Voir aussi