SVP j'ai essayer de prog. application de “chat” (à la fois le serveur et le client) en utilisant l’interface de programmation POSIX.
ce que j'ai pu c'est de faire passer une chaine dans le pipe depuis un processus à un autre mais le problème c'est que le sujet est le suivant:
[#0e00f0][#0e00f0]Un programme serveur centralise les échanges. Un message tapé dans la fenêtre d'un client est
transmis au serveur sous forme de requête à chaque retour chariot. Une requête contient l'identifiant
du client (UID, PID) ainsi que le contenu du message. Son type est le suivant :
Code :
- typedef struct req {
- int sender_uid;
- int sender_pid;
- char msg[1024];
- } chat_request;
|
Le serveur récupère les requêtes des clients en venant lire dans un tube dédié. Il existe deux requêtes
particulières :
1. Une requête pour demander à participer au chat, dont le contenu sera "JOIN".
2. Une requête pour demander à quitter le chat, dont le contenu sera "QUIT".
Ces requêtes spécifiques amènent le serveur à rajouter ("JOIN" ) ou à supprimer ("QUIT" ) le client
dans une liste des participants, puis à envoyer un signal au client pour lui signifier le traitement de sa
requête. Un client ne peut commencer à émettre des messages qu'après avoir reçu le signal du
serveur lui indiquant qu'il est enregistré. Inversement, un client ne peut se terminer normalement
tant qu'il n'a pas reçu un signal adéquat du serveur.
Toutes les autres requêtes client seront considérées comme des requêtes messages et seront
retransmises aux autres clients participant à l'application.
A chaque réception de requête message, le serveur recopie celle-ci dans un segment de mémoire
partagée dédié aux réponses, puis attend que tous les clients aient lu le message avant de transmettre
le message suivant. La synchronisation des lectures/écritures dans le segment se fera au moyen de
sémaphores.
La figure ci-dessous représente le traitement d’une requête client.
et merci d'avance
Message édité par leader01 le 07-01-2011 à 17:43:34