Objectifs
- Comprendre la programmation client-serveur.
Client-Serveur
Un environnement client-serveur permet un mode de communication sur un réseau entre les programmes. Un de ces programmes est appelé serveur qui répond aux requêtes d’autres programmes appelés clients. Par exemple,
- Un client envoie un message au serveur et le serveur reçoit le message et le renvoie.
- Un client envoie l’opérateur et un/deux numéros et le serveur fait le calcul et envoie le résultat.
Référence : https://fr.wikipedia.org/wiki/Client-serveur
Pour simuler un environnement client-serveur, on va utiliser une seule machine en lançant deux terminaux. Sur un des deux terminaux exécutez le code du serveur. Sur l’autre, exécutez le code du client.
Exercice 5.1
Téléchargez les fichiers suivants à partir d’e-campus : client.h, client.c, serveur.h, serveur.c, Makefile. Lisez bien tous les fichiers. Exécutez
$ make
et voyez les fichiers exécutables qui sont créés.
Ouvrez deux terminaux. Sur le premier terminal, exécutez
./serveur
et sur le second terminal
./client
Entrez un message et voyez les affichages sur les deux terminaux.
Exercice 5.2
Modifiez la fonction recois_envoie_message (serveur.c). Quand le serveur reçoit un message, il demande à l’utilisateur de saisir un message et envoie ce message au client. Testez votre code. N’oubliez pas d’utiliser make (pour la compilation et la génération des fichiers exécutables).
Exercice 5.3
Vous avez remarqué les premiers caractères dans chaque message : ‘message’ suivi par :. Pour votre prochaine question, on utilisera calcule. Modifiez les fichiers client.c et serveur.c pour le support des calculs simples (+,-,*,...). Ajoutez une fonction envoie_operateur_numeros(...) dans le fichier client.c et recois_numeros_calcule(...) dans le fichier serveur.c. Le client envoie l’opérateur et un (ou deux) numéros et le serveur envoie le résultat. Par exemple, si le client envoie le message
calcule : + 23 45
Le serveur répond
calcule : 68
Testez votre code avec les numéros flottants et entiers.
Exercice 5.4
Pour votre dernière question, téléchargez le dossier etudiant. Dans ce dossier, il y a 5 notes de 5 étudiants. Utilisez envoie_operateur_numeros (voir 6) pour calculer la somme total des notes de chaque étudiant ainsi que la moyenne de classe pour chaque sujet.
Fichiers
client.h, client.c, serveur.h, serveur.c
Instructions
- Ne pas oublier les commentaires (nom de fichier, objectif, auteurs, , les lignes importantes de code etc.). Les commentaires sont notés.
- N’oublier pas de mettre à jour le fichier README et ajouter les détails concernant votre deuxième exercice.
- Compte rendu en format .zip en un seul fichier.