- Compagnie ~ Produits ~ Boutique ~ Communauté

Tutoriel


Écriture d'un serveur socket multiclients performant en C/C++


L'écriture d'une application client-serveur dans un langage de programmation, quel qu'il soit, constitue une étape obligée de n'importe quel programmeur accompli. Toutefois, dans le cas d'un langage comme le C ou le C++, cette étape peut être laborieuse et susciter un grand nombre de questions.

La raison à cela est qu'il est pratiquement obligatoire (à moins d'utiliser une librairie plus évoluée) de passer par les appels socket bas niveau des librairies du système d'exploitation. Ceux-ci sont plus ou moins standardisés dans le sens où ils sont pratiquement identiques quel que soit le système (Windows, Linux, etc.). Ils sont également puissants puisqu'ils permettent de créer tout type de sockets basés sur l'un ou l'autre protocole ou types d'adresses différents.

Cependant, ces fonctions peuvent sembler obscures, surtout pour un débutant, et nécessitent toujours de se plonger attentivement dans leur documentation pour les utiliser. De plus, l'ordre dans lequel les appeler et les utiliser n'est pas vraiment intuitif et nécessite souvent de recourir à des exemples.

Ce tutoriel propose donc de rentrer dans le détail des mécanismes utilisés pour créer une librairie de gestion de sockets. La librairie proposée ici gère des sockets basés sur le protocole TCP/IP. C'est à dire ceux que l'on utilise 99% du temps en pratique. Toutes les sources sont fournies (voir la rubrique download) et le code se compile aussi bien sous Windows (testé avec Visual Studio) que sous Linux.

Dans cet article, je pars du principe que le lecteur possède un minimum de connaissances en C/C++ ainsi que sur le protocole TCP/IP. Dans le cas contraire, je l'invite à tout d'abord en apprendre un peu plus sur le sujet afin de pouvoir suivre sans encombre ce tutoriel. Un minimum de connaissances sur la notion de "thread" est également préférable si le lecteur désire comprendre de façon approfondie tous les mécanismes de la libraire.

Enfin, ce tutoriel n'est pas exhaustif et ne dispense donc pas le lecteur d'étudier avec attention la documentation des fonctions mettant en oeuvre les sockets :


Des questions, des remarques, des bugs, n'hésitez pas à me contacter :

The Incredible JSG
jsg@quantic-storm.com

Chapitres : Intro 01 02

Dernière mis à jour : 05/2008
   

Copyright (C) 2010 Quantic-Storm, tous droits réservés