Communication inter processus GROS SOUCIS

Fermé
jaille Messages postés 5 Date d'inscription dimanche 14 novembre 2010 Statut Membre Dernière intervention 9 janvier 2015 - 28 mai 2014 à 10:34
Bonjour, à tous !!

voila j'ai un soucis que je n'arrive pas à résoudre
En fait j'ai créé un serveur de calcul qui offre la possibilité d'effectuer deux types d'opérations mais malheureusement je n'arrive pas à faire communiquer un script externe (qui traite un calcul spécial) ce qu'il faudrait c'est que le processus serveur réceptionne les requètes client et qu'il traite lui même chaque requete avant de renvoyer la réponse
donc pour faire communiquer mon ^programme 2 par l'intermediaire du serveur je bloque
(je mets le code du serveur ) si vous avez quelques pistes n'hesitez pas



int main() {
int msqid;
Request operationDemande;
Response resultat;

if ((msqid = msgget((key_t) CLE, IPC_CREAT|0750)) == -1) {
perror("msgget");
exit(1);
}

while (1) {
// reception des msg client
// de taille structure Request - 4 (taille de la variable type, un int est code sur 4 octets )
// type de msg = 1 ( msg de type req. de calcul)
if (msgrcv(msqid, &operationDemande, sizeof(Request)-4, 1, 0) == -1) {
perror("msgrcv");
exit(2);
}

// le type du msg resultat = pid servira au client a identifier ses msg
resultat.type = (int) operationDemande.PID;

printf("op1=%d, ope=%c, pid=%d\n",operationDemande.operande1
,operationDemande.operateur
, operationDemande.PID);

switch (operationDemande.operateur) {
case 'p':
// ICI LE CODE DU CALCUL

break;
case 'c':
resultat.result = operationDemande.operande1 * 3.14 * 2;
break;
case 'a':
resultat.result = operationDemande.operande1 * 3.14 * 3.14;
break;
}

//envoi du msg resultat au client identifier par son pid
if (msgsnd(msqid, &resultat, sizeof(Response)-4, 0) == -1) {
perror("msgsnd");
exit(3);
}
}
return 0;
}