Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Système d’exploitation
Chat Céline BONNEFOY Mathieu GUIDON-THIESSELIN Nicolas KACZMARSKI Cendrine MARTIN
2
Sujet Création d’un chat à l’aide de threads
Client : chat -p <pseudo>
3
Sujet Serveur : server [-n <nbmaxi> -t <timeout> -debug]
-n <nbmaxi> pour limiter le nombre de connexions simultanées à nbmaxi si l'option -n n'est pas renseignée, nbmaxi est fixé par défaut à 200. -t <timeout> pour déconnecter automatiquement un utilisateur en cas d'inactivité durant un laps de temps supérieur à timeout (en secondes). timeout défaut : 600 - debug pour voir les infos
4
Conception
5
Conception Structure Client : pthread_t id Entier sock Chaine pseudo
6
Conception Variables globales nombre de clients actuellement connectés
Entier nb_clients = 0 nombre de clients maximum en simultané Entier maxUser = MAXUSER temps maximum d'inactivité Entier timeout = TIMEOUT mutex pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER tableau contenant tous les clients connectés au serveur struct_client *clients[MAXUSER-1]
7
Programmation Utilisation de Sémaphore d’exclusion mutuelle pour le tableau et la variable nbclient Un thread par client 1 thread pour le server : écoute 1 thread pour le server en mode debug (showinfo)
8
Programmation Commandes possibles
/nick <nouveau pseudo> : change le pseudo de l'utilisateur. /msg <pseudo> <message> : envoi un message privé à l'utilisateur pseudo. /quit [<message>] : quitte le client en envoyant message aux autres utilisateur. /list : affiche la liste des pseudos des clients connectés au serveur. /help : affiche la liste des commandes disponibles.
9
Programmation
10
Serveur Algorithme Récupération des paramètres : Création du serveur
nombre maximum de clients temps maximum d'inactivité avant la déconnexion Création du serveur TANTQUE (1) FAIRE acceptServer(server) Création d'un thread (chat) FINTANQUE
11
Serveur Fonctions Fonction acceptServer (sock : Entier ) : Entier
attend une nouvelle connexion dès qu'un client se connecte renvoie l'identifiant du socket
12
Client Algorithme Vérification que le nombre maximum d’utilisateurs non atteint Vérification que le pseudo n'est pas déjà utilisé Stockage du client dans la structure struct_client Stockage de la structure client dans le tableau de client p (mutex) // début de la section critique clients[nb_clients] = temp nb_clients ← nb_clients + 1 v(mutex) // fin de la section critique EnvoiMessage (« Bienvenue », idClient) EnvoiMessageTous (« Nouveau client ») TANTQUE (1) FAIRE Vérification du dépassement du timeOut Lecture du message envoyé SI commande Alors appel commande SINON EnvoiMessageTous (msg, idClient) FINSI FINTQ
13
Conclusion Appliquer nos connaissances théoriques à un cas pratique
Sujet chat intéressant : programme courant Threads: manière simple et claire de faire de la programmation en parallèle gestion des variables partagées plus complexe que les IPC Travailler en groupe Améliorer notre organisation.
14
Système d’exploitation
Chat Céline BONNEFOY Mathieu GUIDON-THIESSELIN Nicolas KACZMARSKI Cendrine MARTIN
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.