Créer un serveur TCP/IP mono-processus sans thread

Problème

Vous voulez que votre serveur TCP/IP n’ait qu’une seule file d’exécution.

Solution

Utilisez select() pour détecter les sockets sur lesquelles se trouvent des données à lire, et implémentez vous-même la mise en parallèle de la gestion des connexions.

Discussion

La fonction select() permet de tester entre autres si des données sont disponibles en lecture sur un ou plusieurs descripteurs de fichiers. La boucle principale d’un serveur TCP/IP mono-processus sans thread s’articule donc autour de cette fonction select() afin de déterminer quels clients souhaitent écrire à notre serveur et lesquels il n’est pas nécessaire d’interroger. Voici un exemple :


#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <unistd.h> 
#include ...
Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Créer un serveur TCP/IP multi-thread
Suivant
Créer un serveur TCP/IP ou UDP/IP qui utilise le démon inetd