Test de rattrapage Réseau : Partie II
(10 mars 2001 – durée : 2h)
M. Laporte - D. Mathieu - C. Pain-Barre
I.U.T. d'Aix en Provence - Département Informatique

Tout document autorisé
Important : vous ne vous occuperez pas de l'inclusion des headers.
Vous pouvez utiliser tous nos Wrappers.
Sommaire
Fonction InitClients()
Fonction TraiterConnexion()
Fonction TraiterInfoDuClient()
Fonction TraiterClavier()
Fonction TraiterInfoDuServeur()
Fonctions manquantes
Il reste encore à écrire les fonctions
InitClients(),
TraiterConnexion(), TraiterInfoDuClient(),
TraiterInfoDuServeur() et TraiterClavier().
Fonction InitClients()
La fonction initialise TabClients et la variable
Mask (voir partie I).
Fonction TraiterConnexion()
Ainsi que nous l'avons dit, un client n'est effectif
que lorsque celui-ci a communiqué son pseudo. Cependant,
il n'est pas souhaitable que le serveur attende ce dernier dans la fonction
TraiterConnexion() car il ne peut pas répondre aux requêtes
des autres clients. Une meilleure solution est de reporter la réception
du pseudo dans TraiterInfoDuClient(). La fonction TraiterConnexion()
se limite à traiter la demande de connexion et à mettre à
jour la variable Mask (voir partie I).
Fonction TraiterInfoDuClient()
Le serveur peut recevoir quatre sortes d'informations
en provenance du client :
-
son pseudo,
-
une demande de liste des clients effectifs,
-
un message à acheminer,
-
une signalisation de demande de déconnexion.
Les formats des trois premières informations
ont été décrits dans le paragraphe "Message en
provenance d'un client" de la partie I. Le terme "signaler" a été
expliqué dans le paragraphe 'Client connecté' de la
partie 1. Cette signalisation est détectable comme un événement
en lecture.
Si le destinataire d'un message à acheminer
est inconnu, le serveur renvoie à l'expéditeur :
-
le "numéro du serveur" (entier court non signé à 0),
et
-
le caractère E (comme Erreur),
-
le message à l'origine de l'erreur (destinataire, taille et données).
Rappel : les informations 1 et 4 doivent déclencher l'envoi
de la liste des clients effectifs à tous les clients effectifs.
Fonction TraiterClavier()
La fonction TraiterClavier() effectue deux
traitements possibles :
-
soit récupère un "numéro de client" destinataire,
-
soit récupère le message à transmettre au destinataire
précédemment saisi.
Chaque appel à la fonction TraiterClavier()
fait donc basculer d'un traitement à un autre.
On aurait pu envisager d'enchaîner les deux
traitements dans la fonction, mais on préfère retourner à
l'attente d'un éventuel événement en provenance du
serveur entre la saisie du destinataire et celle du message à envoyer.
Fonction TraiterInfoDuServeur()
Le client peut recevoir trois sortes d'informations
en provenance du serveur :
-
une annonce de début de liste des clients effectifs (voir "Réception
de la liste des clients effectifs par le client", partie I)
-
un message d'erreur (voir "Fonction TraiterInfoDuClient()"
ci-dessus),
-
un message en provenance d'un client (voir "Message en provenance d'un
client" de la partie I)
Ces informations sont à afficher.

© D. Mathieu mathieu@romarin.univ-aix.fr
I.U.T.d'Aix en Provence - Département Informatique