Exemples de serveur de socket Unix

Publicités

Pour faire d’un processus un serveur TCP, vous devez suivre le étapes données ci-dessous –

  • Créez un socket avec l’appel système socket().

  • Liez le socket à une adresse à l’aide de l’appel système bind(). Pour un socket serveur sur Internet, une adresse se compose d’un numéro de port sur la machine hôte.

  • Écoutez les connexions avec l’appel système listen().

  • Accepter une connexion avec l’appel système accept(). Cet appel bloque généralement jusqu’à ce qu’un client se connecte au serveur.

  • Envoyez et recevez des données à l’aide des appels système read() et write().

Maintenant, mettons ces étapes sous forme de code source. Mettez ce code dans le serveur de fichiers.c et compilez-le avec le compilateur gcc.

Gérer plusieurs connexions

Pour permettre au serveur de gérer plusieurs connexions simultanées, nous apportons les modifications suivantes au code ci−dessus –

  • Mettre l’instruction accept et le code suivant dans une boucle infinie.

  • Une fois la connexion établie, appelez fork() pour créer un nouveau processus.

  • Le processus enfant fermera sockfd et appellera la fonction doprocessing, en passant le nouveau descripteur de fichier socket comme argument. Lorsque les deux processus ont terminé leur conversation, comme indiqué par le retour de doprocessing(), ce processus se termine simplement.

  • Le processus parent ferme newsockfd. Comme tout ce code est dans une boucle infinie, il reviendra à l’instruction accept pour attendre la prochaine connexion.

La séquence de code suivante montre une implémentation simple de la fonction dotraitement.

Publicités



Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.