Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sys/types.h>
- #include <sys/ipc.h>
- #include <sys/msg.h>
- #include <unistd.h>
- #include <stdio.h>
- #include <signal.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct {
- float op1;
- float op2;
- float resultat;
- char operation;
- }mess;
- struct msg_struct {
- long type;
- pid_t pids;
- mess calcul;
- }
- =>>>C'EST LE HEADER QUI S'APPELLE msgheader.h
- #include "msgheader.h" /*inclusion du header contenant la structure des messages*/
- #define MSGKEY 50 /* cle d'entree dans la table d'IPC (cf. ipcs)
- doit etre la meme que celle du client.
- Il faudrait la mettre dans un fichier
- de type .h qui serait inclus par
- la client et le serveur !!!!\n [] |
- */
- int main (int argc,char *argv[])
- {
- /* variables qui vont nous être utiles */
- float oper1,oper2,result;
- char operat;
- key_t cle;
- pid_t pid_client;
- struct msg_struct mes;
- int msg_id;
- if((cle=ftok(argv[1],0))==-1) /*création de la clé et vérification erreurs */
- {
- perror("Erreur \n");
- exit(10);
- }
- /*création de la file*/
- msg_id= msgget(cle,0666|IPC_CREAT);
- while(1)
- {
- printf(" en attente de message ..........\n");
- msgrcv(msg_id,&mes,sizeof(pid_t),1L,0);
- pid_client=mes.pids;
- oper1=mes.calcul.op1;
- oper2=mes.calcul.op2;
- operat=mes.calcul.operation;
- if(operat=='+')
- {
- result=oper1+oper2;
- }
- mes.type=pid_client;
- mes.pids=getpid();
- mes.calcul.resultat=result;
- msgsnd(msg_id,&mes,sizeof(pid_t),0);
- }
- return 0;
- }
- ET CA C'EST LE serveur.c
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement