Performances de Socket, exemple de technologie
Mise à jour : novembre 2007
Cet exemple indique comment utiliser les améliorations apportées à la classe System.Net.Sockets.Socket afin de générer une application serveur qui utilise les E/S réseau asynchrones pour obtenir les performances les plus élevées.
Pour plus d'informations sur l'utilisation des exemples, consultez les rubriques suivantes :
Pour générer l'exemple à partir de l'invite de commandes
Ouvrez une fenêtre d'invite de commandes et accédez au sous-répertoire \CS du répertoire AsyncSocketServer. Pour plus d'informations sur les paramètres requis et l'invite de commandes du Kit de développement logiciel (SDK), consultez Comment : définir des paramètres d'exemple.
Tapez msbuild AsyncSocketServer.sln sur la ligne de commande. Cette commande générera les applications AsyncSocketServer et AsyncSocketClient.
Pour générer l'exemple à l'aide de Visual Studio
Ouvrez l'Explorateur Windows et accédez au sous-répertoire \CS du répertoire AsyncSocketServer.
Double-cliquez sur l'icône de AsyncSocketServer.sln pour ouvrir le fichier dans Visual Studio.
Dans le menu Générer, sélectionnez Générer la solution.
Les applications AsyncSocketServer et AsyncSocketClient sont générées dans le répertoire par défaut \bin ou \bin\Debug.
Pour exécuter l'exemple
Accédez au répertoire qui contient les fichiers exécutables générés, à l'aide de la fenêtre d'invite de commandes.
Tapez AsyncSocketServer.exe sur la ligne de commande avec les arguments de ligne de commande appropriés pour exécuter l'application AsyncSocketServer.
Tapez AsyncSocketClient.exe sur la ligne de commande avec les arguments de ligne de commande appropriés pour exécuter l'application AsyncSocketClient afin de tester l'application AsyncSocketServer.
Configuration requise
Cet exemple requiert le .NET Framework v3.5, 3.0 SP1 ou 2.0 SP1.
Démonstrations
Une série de nouvelles classes a été ajoutée dans le cadre d'un ensemble d'améliorations apportées à la classe System.Net.Sockets.Socket, qui fournit un autre modèle asynchrone pouvant être utilisé par les applications de socket hautes performances spécialisées. Ces améliorations ont été spécialement conçues pour les applications serveur réseau qui requièrent un niveau de performances élevé. Une application peut utiliser le modèle asynchrone amélioré de manière exclusive ou uniquement dans des zones ciblées de leur application (par exemple, lors de la réception de quantités importantes de données).
L'exemple AsyncSocketServer montre comment utiliser ces nouvelles méthodes sur la classe System.Net.Sockets.Socket en implémentant un serveur d'écho. Après les avoir lues, le serveur renvoie au client toutes les données que celui-ci a envoyées. Le serveur d'écho implémenté dans cet exemple gère simultanément plusieurs clients (jusqu'au nombre maximal spécifié en tant qu'argument de ligne de commande) et met en surbrillance certains des éléments clés des méthodes socket asynchrones basées sur événement. L'exemple AsyncSocketServer illustre la création d'un pool de tampons de données réutilisables et d'objets de contexte System.Net.Sockets.SocketAsyncEventArgs comme méthode pour augmenter les performances du serveur.
L'exemple AsyncSocketClient est une application cliente simple qui sert à tester l'exemple d'application AsyncSocketServer. L'exemple AsyncSocketClient n'utilise aucune des nouvelles améliorations apportées à la classe System.Net.Sockets.Socket.
L'application AsyncSocketServer requiert quatre paramètres de ligne de commande.
AsyncSocketServer.exe <numConnections> <receiveSize > <addressFamily> <localPortNum>
Les paramètres sont les suivants :
numConnections - Nombre maximal de connexions simultanées que le serveur acceptera.
receiveSize - Taille de la mémoire tampon, en octets, utilisée par le serveur pour chaque opération de réception.
addressFamily - Famille d'adresses du socket que le serveur utilisera pour écouter les connexions entrantes. Les valeurs prises en charge sont ipv4 et ipv6.
localPortNum - Port local avec lequel le serveur créera une liaison.
Voici un exemple d'utilisation pour autoriser 500 connexions sur IPv4 avec une taille de mémoire tampon de 1024 octets pour chaque opération de réception et une écoute sur le port 8000 :
AsyncSocketServer.exe 500 1024 ipv4 8000
L'application AsyncSocketClient requiert deux paramètres de ligne de commande.
AsyncSocketClient.exe <destIPAddress> <destPortNum>
Les paramètres sont les suivants :
destIpaddress - Adresse IP de destination de l'application AsyncSocketServer à laquelle se connecter.
destPortNum - Numéro de port de destination de l'application AsyncSocketServer.
Voir aussi
Référence
System.Net.Sockets.SendPacketsElement