Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
934 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Programme client serveur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Programme client serveur

n°1295030
clubmed02
Posté le 30-01-2006 à 17:53:08  profilanswer
 

Bonjour,
j'ai un programme client serveur de reservation de places de spectacles à terminer, et je suis bloqué.
 
En détail :
- Dans le cas d'une consultation, les clients envoient des requêtes de consultation du nombre de places restantes pour un spectacle (nom, date), et recoivent en retour nb_dispo du serveur de consultation.
- Dans le cas d'une réservation, les clients envoient des requêtes de réservation (nom, date, nb_place) et recoivent du serveur de réservation, un acquitement si cela est possible (nb_dispo >= nb_place).
 
Les contraintes :
1. Clients et Serveurs sont sur une même machine
2. Le processus père du serveur de réservation créé un fils dont le code exécutable recouvre celui du père. C'est donc un execl qui va faire le boulot.
3. Les infos des spectacle (sorte de BDD) sont stockées dans un segment de mémoire partagée.
 
j'ai donc choisit comme moyen de communication :
-entre les clients et les serveurs : les Files de Messages; une pour la consultation (clé 17) et une pour la réservation (clé 314).
-entre le père et son fils (serveur consultation et réservation): 1 tube anonyme.
 
j'en suis au serveur de consultation, quand le fils lance l'execl. Comment récupérer le résultat ??? (càd nb_dispo)
 
Voici ce que j'ai déjà fait :
 
Les structures des messages:
 
A_Consultation :
 
Requête :
 
struct requete_cons
{
long  letype ;      /* destinataire du message */
pid_t  mon_pid ;  /* N° PID de l’expéditeur */
char   nom[512] ; /* nom du spectacle */
char  date[8];; /* date du spectacle jjmmaaaa */
} ;
 
Réponse :
 
struct reponse_cons
{
long  letype ;
int   nb_dispo ; /* nombre de places disponibles */
} ;
 
B_Réservation :
 
Requête :
 
struct requete_resa {
long letype ;        /* destinataire du message */
pid_t mon_pid ;    /* N° PID de l’expéditeur */
char  nom[512] ;   /* nom du spectacle */
char date[8];         /* date du spectacle jjmmaaaa */
int  nb_places   /* nombre de places à réserver */
} ;
 
Réponse :
 
struct reponse_resa
{
long  letype ;
short etat ;  /* résultat de la réservation */
} ;
 
Les processus CLIENTS
 
a - le processus client Consultation :
 
Main ( )
{
Int msqid ;
Msqid = msgget (17,0)
Requete_cons.letype = 1 ;
Requete_cons.mon_pid = getpid ( ) ;
Msgsnd (msqid , requete_cons , ___ ) ;
Msgrcv (msqid , reponse_cons , getpid ( )  ) :
Exit ( )
}
 
b - le processus client Réservation :
 
Main ( )
{
Int msqid ;
Msqid = msgget (314,0)
Requete_resa.letype = 2 ;
Requete_resa.mon_pid = getpid ( ) ;
Msgsnd (msqid , requete_resa , ___ ) ;
Msgrcv (msqid , reponse_resa , getpid ( )  ) :
Exit ( )
}
 
c- le processus serveur Consultation:
 
# include …
# define CLE 17
Main ( )
{
Int msqid ;
int tube[2] ;
Pid_t retour ;
Msqid = msgget (17, IPC_CREAT | IPC_EXCL | 0660 )
Msgrcv (msqid , requete_cons , 1 , ___ ) ;
 
Pipe (tube) ;      /* ouverture du tube */
Retour = fork ( ) ;
 
If (retour == 0)
{                   /* LE FILS */
close ( tube [1] ) ;     /* pas d’écriture sur le tube */
read ( tube [0] , ………    /* lecture sur le tube */
execl (« /home/steph/applis/consult.exe », « consult.exe », ___ ) ;
msgsnd ( msqid , nb_dispo, ____ ) ;  /* envoi résultat de consult.exe */
close ( tube [0] ) ;     /* pas de lecture sur le tube */
exit ( ) ;
 
else
{        /* LE PÈRE */
close ( tube [0] ) ;     /* pas de lecture sur le tube */
write( tube [1], requete_cons, ???)  /* écriture  requete sur le tube */
close ( tube [1] ) ;
wait ( ) ;
}

mood
Publicité
Posté le 30-01-2006 à 17:53:08  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Programme client serveur

 

Sujets relatifs
Executer un programme externe sous WindowsServeur d'applis J2EE
Script vba pour diriger autre programme...need help ;)problème requête client vers servlet
Lancer un programme et controler celui ciCroûtage dans les règles d'un serveur : Paramétrage d'Oracle ?
lancer un programme sous une session differente[C] Probleme dans un programme de cryptage
[Résolu]pb d'execution de programme[java] programme client/serveur
Plus de sujets relatifs à : Programme client serveur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR