Ce rapport concerne un mini-projet qui consiste à développer une application "chat" (à la fois serveur et client) en utilisant l'interface de programmation POSIX. Ce projet vient à la suite d'une formation appliquée nous permettant de mettre en pratique les connaissances acquises dans le module administration système. Les différentes parties traitées dans le cours nous ont permis de réaliser ce projet. Cependant, d'autres parties qu'on n'a pas traité dans le cours ce qui nous a poussés à effectuer des recherches sur les sémaphores, la synchronisation des processus et l'ordonnancement des processus etc (...)
[...] En effet, c'est elle qui définit le format des requêtes envoyées au serveur par les différents clients. o str_client Cette structure définie, le format des éléments de la liste des clients en ligne. o liste_client Cette structure définie le format de la liste elle-même. La définition des variables suivantes : o nb_max C'est le nombre maximum de clients autorisés à chater par session. o la_liste C'est la liste des clients. o cle_seg & id_seg C'est la clé et l'identifiant du segment de mémoire partagée. [...]
[...] A noter que si un autre client veut se connecter, à travers l'application, il n'aura qu'à lancer à nouveau le programme client. Nous avons fixé expressément le nombre maximum de clients autorisés pour une session simultanée à ‘10'. Pour demander la déconnection, il suffira au client voulant quitter le chat, d'envoyer le message quit au serveur puis attendre que sa requête soit traitée. Ce dernier (le serveur) va le supprimer de la liste des clients puis lui fera signe qu'il est définitivement déconnecté. [...]
[...] Ce dernier va par la suite informer tous ses clients de la disponibilité à la lecture d'un message dans le segment de mémoire partagée en leur envoyant le signal ‘SIGUSR1'. Nous notons également ici que les signaux SIGUSR1 et SIGUSR2 ont été redéfinis pour les besoins de l'application. Pour plus d'informations se référer à la partie Fichiers en-tête section Les_Signaux.h Nous tenons à préciser que seuls les processus Fils1 et Fils2 écrivent dans le segment de mémoire partagé. L'écriture dans le segment de mémoire partagée est synchronisée avec l'aide de sémaphores. [...]
[...] Architecture de l'application : L'application comme le montre la figure ci-dessus se compose de deux parties essentielles, il y a le programme serveur et le programme client. Le programme serveur : Le programme serveur centralise les échanges, Le programme serveur a un processus principal que nous appelleront processus ‘PERE' dans toute la suite de ce rapport, qui est chargé d'initialiser le serveur puis crée deux processus fils qu'on appellera Fils1 et Fils2 tout au long du rapport. Lors du lancement du programme serveur, nous avons tout d'abord l'initialisation du SERVEUR qui est caractérisé par : Initialisation de la liste des clients devant se connecter pour chater. [...]
[...] SIGUSR1 Lorsqu'un processus reçoit ce signal, il attache le segment de mémoire partagée à son espace d'adressage, lit son contenu et affiche la connexion ou la déconnection d'un autre client selon que la requête soit de type ‘JOIN' ou ‘QUIT'. Si la requête n'est ni ‘JOIN' ni ‘QUIT' alors c'est une requête de conversation, le processus affiche alors le message contenu dans la requête. SIGUSR2 Lorsqu'un processus reçoit ce signal, il envoi le signal ‘SIGUSR1' à tous les clients connectés. SIGCONT Lorsqu'un processus reçoit ce signal il, affiche les messages relatifs à la connexion d'un client. SIGCHLD Lorsqu'un processus reçoit ce signal il, affiche les messages relatifs à la déconnection d'un client. [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture