Socket.SendPacketsAsync(SocketAsyncEventArgs) 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 une collection de fichiers ou dans des mémoires tampons de données de manière asynchrone à un objet connecté Socket .
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
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 e paramètre est déclenché à l’achèvement de l’opération.
false si l’opération d’E/S s’est terminée de façon synchrone. Dans ce cas, l’événement Completed sur le e paramètre ne sera pas déclenché et l’objet e transmis en tant que paramètre peut être examiné immédiatement après l’appel de méthode pour récupérer le résultat de l’opération.
Exceptions
Le fichier spécifié dans la FilePath propriété est introuvable.
Une opération de socket était déjà en cours à l’aide de l’objet SocketAsyncEventArgs spécifié dans le e paramètre.
Il Socket n’est pas connecté à un hôte distant.
Il Socket a été fermé.
Un fichier sans Socket connexion est utilisé et le fichier envoyé dépasse la taille de paquet maximale du transport sous-jacent.
Remarques
La SendPacketsAsync méthode est utilisée pour envoyer une collection de fichiers ou dans des mémoires tampons de données à l’hôte distant. Il Socket doit déjà être connecté à l’hôte distant.
Si un System.Net.Sockets.SendPacketsElement fichier fait référence à un fichier dans le répertoire de travail, il peut être identifié uniquement avec le nom du fichier ; sinon, le chemin 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 Window 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 trouvée dans l’API Windows Sockets 2. Pour plus d’informations sur la fonction TransmitPackets et ses indicateurs, consultez la documentation windows Sockets .
Bien que prévu pour les protocoles orientés connexion, la SendPacketsAsync méthode fonctionne également pour les protocoles sans connexion, à condition que vous appeliez d’abord le BeginConnect, Connectou ConnectAsync la méthode 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 du client 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 qui lance l’appel SendPacketsAsync de méthode est utilisé pour des calculs lourds, il est possible, bien que peu probable, que les API puissent être empêchées de lancer. Notez qu’il existe une différence entre les API en mode noyau et en mode utilisateur. Les API du noyau se lancent lorsqu’un thread est dans un état d’attente. Les API en mode utilisateur se lancent lorsqu’un thread est dans un état d’attente alertable