SHARE
TWEET

Untitled

a guest Apr 5th, 2012 26 Never
  1. #include <sys/types.h>
  2. #include <sys/ipc.h>
  3. #include <sys/msg.h>
  4. #include <unistd.h>
  5. #include <stdio.h>
  6. #include <signal.h>
  7. #include <stdlib.h>
  8. #include <string.h>
  9.  
  10.  
  11.  
  12. typedef struct {
  13.         float op1;
  14.         float op2;
  15.         float resultat;
  16.         char operation;
  17.        
  18. }mess;
  19.  
  20. struct msg_struct {
  21.         long type;
  22.         pid_t pids;
  23.         mess calcul;
  24. }
  25.  
  26. =>>>C'EST LE HEADER  QUI S'APPELLE msgheader.h
  27.  
  28.  
  29. #include "msgheader.h"    /*inclusion du header contenant la structure des messages*/
  30.  
  31. #define MSGKEY    50    /* cle d'entree dans la table d'IPC (cf. ipcs)
  32.               doit etre la meme que celle du client.
  33.               Il faudrait la mettre dans un fichier
  34.               de type .h qui serait inclus par
  35.               la client et le serveur !!!!\n  []  |
  36.            */
  37.  
  38. int main (int argc,char *argv[])
  39. {
  40.    /* variables qui vont nous être utiles */
  41.    float oper1,oper2,result;
  42.    char operat;    
  43.    key_t cle;
  44.    pid_t pid_client;
  45.    struct msg_struct mes;
  46.    int msg_id;
  47.    
  48.    
  49.  
  50.    if((cle=ftok(argv[1],0))==-1)    /*création de la clé et vérification erreurs */
  51.    {
  52.        perror("Erreur \n");
  53.        exit(10);
  54.    }
  55.    
  56.    /*création de la file*/
  57.    msg_id= msgget(cle,0666|IPC_CREAT);
  58.  
  59.    while(1)
  60.    {
  61.        printf(" en attente de message ..........\n");
  62.        msgrcv(msg_id,&mes,sizeof(pid_t),1L,0);
  63.        pid_client=mes.pids;
  64.        oper1=mes.calcul.op1;
  65.        oper2=mes.calcul.op2;
  66.        operat=mes.calcul.operation;
  67.        if(operat=='+')
  68.        {
  69.            result=oper1+oper2;
  70.        }
  71.        
  72.  
  73.        mes.type=pid_client;
  74.        mes.pids=getpid();
  75.        mes.calcul.resultat=result;
  76.        
  77.        msgsnd(msg_id,&mes,sizeof(pid_t),0);
  78.    }
  79.  
  80.    return 0;
  81. }
  82.  
  83.  
  84. ET CA C'EST LE serveur.c
RAW Paste Data
Top