Alors les gars, discutons du projet sur les signaux.
Dans ce projet, nous continuerons donc à étendre le même projet que nous avons réalisé dans ce cours.
Jusqu'à présent, lorsqu'un nouveau client se connecte au processus serveur, c'est-à-dire au processus serveur RTM, il synchronise
l'ensemble de sa table de routage et de sa table ARP avec le nouveau client connecté en utilisant respectivement la socket de domaine Unix et
la mémoire partagée.
Nous avons donc déjà mis en œuvre cette méthode dans le cadre des deux projets précédents de ce cours.
Nous allons maintenant ajouter une nouvelle fonctionnalité à ce projet.
Maintenant, lorsqu'un nouveau client se connecte au processus du serveur et...
Une fois que le processus du serveur Altium a terminé la synchronisation des données.
La table de routage et la table ARP de ce nouveau client.
Par la suite, ce nouveau client envoie son propre identifiant de processus, n'est-ce pas ?
Ainsi, dans un programme C, vous pouvez obtenir l'ID du processus d'un programme C à l'aide de la fonction get PID.
C'est vrai.
Ce nouveau client enverra donc son propre identifiant de processus au processus du serveur RTM et il enverra cet identifiant de processus
au processus du serveur RTM en utilisant la socket de domaine Unix comme IPC.
Vous pouvez donc voir que le client A, le client B et le client C viennent de se connecter à notre processus serveur
et que la synchronisation entre notre processus serveur et tous ces clients vient de se terminer.
Maintenant, lorsque la synchronisation vient de se terminer, les clients sont censés envoyer leur identifiant de processus
au processus serveur en utilisant des sockets de domaine Unix.
Lorsque le serveur reçoit l'ID de processus de tous les clients nouvellement connectés, il stocke
leur ID de processus dans un tableau.
Ainsi, sur un processus serveur, vous pouvez supposer qu'il y a un tableau qui va stocker l'ID de processus de tous
les clients nouvellement connectés.
Désormais, vous pouvez ajouter un choix dans un menu côté serveur.
En d'autres termes, vous pouvez ajouter une option supplémentaire côté serveur.
Et lorsque l'administrateur choisit cette option particulière, le serveur doit vider l'ensemble de sa table de routage
et de sa table ARP dans la mémoire partagée.
C'est vrai.
Cela signifie que le processus serveur va supprimer l'ensemble du contenu de sa table de routage et de sa table
ARP de sa mémoire de processus ainsi que de sa mémoire partagée.
Maintenant, après la vidange, le processus serveur RTM envoie un signal à User1. Ce signal est envoyé à tous les
clients connectés en utilisant leurs pids avec Gil.
Nous avons déjà appris à utiliser la commande Gil, donc en utilisant cette commande kill, le processus serveur
est censé envoyer ce signal à tous les clients connectés.
Lorsque tous les clients connectés reçoivent ce signal, ils sont censés effacer leur propre table
de routage ainsi que les copies de notre table.
L'intention est donc que le processus RTM envoie un signal au reste des clients connectés et que les clients connectés
ayant reçu ce signal soient censés vider leurs structures de données internes, à savoir la table de
routage et la table ARP.
C'est vrai.
La dernière fonctionnalité que vous pouvez ajouter à ce projet est que lorsque le client
met fin à la connexion au domaine Unix avec le processus RTM, il doit nettoyer toutes les tables qu'il maintient.
En d'autres termes, le client doit nettoyer, détruire ou libérer la table de routage ainsi que la table ARP.
C'est vrai.
Avant de fermer la connexion, le client doit envoyer un dernier message au serveur.
C'est vrai.
Il s'agit donc d'un message spécial.
Il pourrait s'agir d'un message d'adieu.
Lorsque le serveur reçoit ce message d'adieu du client, il est censé supprimer l'identifiant
du processus de ce client de la liste.
Il s'agit de cette liste.
Le processus du serveur RTM va supprimer l'ID du processus du client qui vient d'envoyer le message d'adieu
au processus du serveur RTM.
Il s'agit donc de la dernière fonctionnalité que vous pouvez ajouter à ce projet.
C'est ce que l'on peut constater à travers ce projet.
Nous avons en fait pratiqué la plupart des techniques IPC que nous avons apprises dans ce cours.
Dans le cadre de ce projet, nous avons appris à déployer la communication en utilisant des sockets de domaine Unix.
Nous avons appris à déployer la communication en utilisant la mémoire partagée, et nous avons également utilisé des signaux
afin d'évacuer l'ensemble de la table de routage et de la table ARP des processus clients.
J'espère que ce projet vous a plu.
Bonne chance.