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

  FORUM HardWare.fr
  Programmation
  C

  compatibilité GMP / socket

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

compatibilité GMP / socket

n°2197690
bosure
Posté le 16-07-2013 à 12:28:00  profilanswer
 

Bonjour,
j'utilise la bibliothéque GMP, j'ai defini une structure (je doit envoyer des valeurs de variable avec les socket):  

Code :
  1. struct variabletype
  2. {
  3.   char nom;
  4.   mpz_t valeur;
  5.   };


 
je defini mes socket correctement,  bref il n'y a pas de probléme au niveau de mes sockets ,  
 
j'ai crée ces deux fonction :  
 

Code :
  1. void send2 (SOCKET sock,struct variabletype variable)
  2. {
  3. if(send(sock,&variable,sizeof(variable),0)!=SOCKET_ERROR)   
  4.     printf(" envoi effectuer %c \n",variable.nom);
  5.    else
  6.      perror("envoi" );
  7. }
  8. void recv2 (SOCKET sock,mpz_t * var ,char cvar)
  9. {
  10.   struct variabletype variable;
  11. mpz_init(variable.valeur);
  12. if(recv(sock,&variable,sizeof(variable),0)!= SOCKET_ERROR)
  13.   {
  14. printf(" recu: %c :: \n",variable.nom);
  15. gmp_printf("variable.valeur= %Zd \n",variable.valeur);
  16.     if(variable.nom == cvar)
  17.     {
  18.  mpz_init_set(* var,variable.valeur);
  19.     }
  20.     else
  21.       printf("probleme d'envoie\n" );
  22.   }
  23.   else
  24.  perror("recv" );
  25. }


 
les programmes qui discutent utilisent ces deux fonctions :  
tous est correctement initialisé et compile mais il y a une segementation fault au niveau  du "gmp_printf " de recv2. Je l'ai donc mis en commentaire pour voir et la segementation fault apparait cette fois si au " mpz_init_set(* var,variable.valeur) ;" . j'en ai donc déduit qu'il y a un probléme au niveau de recv et send ?  
quelqu'un a t'il déja rancontré ce probléme ?  
note: aucune erreur de send et de recv n'est a observer puisque le "printf(" recu: %c :: \n",variable.nom);" affiche le bon caractére. De plus j'ai le même programe qui tourne avec des int plutôt qu'avec GMP (je me suis entrainé avec les entier avans d'utiliser gmp.h. et il marche trés bien (mais les int ne sont pas assez gros pour se que je veux faire.

mood
Publicité
Posté le 16-07-2013 à 12:28:00  profilanswer
 

n°2197714
Farian
Posté le 16-07-2013 à 14:41:37  profilanswer
 

Bonjour !
 
Je soupçonne que le mpz_t soit un type "opaque", et ne soit rien d'autre qu'un pointeur sur une structure connue uniquement par les fonctions internes de la lib.
 
Dans ce cas-là, il est tout à fait normal que vous ayez une seg. fault, car le processeur qui reçoit le message tente d'accéder à de la mémoire qui appartient à un autre processus (si l'émetteur est sur la même machine) ou une adresse qui est alloué sur une autre machine et qui ne correspond donc à rien sur la machine du receveur.  
 
Pour faire fonctionner le tout, il vous faut une sorte de sérialisation, qui est sans doute fournie par la bibliothèque.
 
Bonne continuation !


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

  compatibilité GMP / socket

 

Sujets relatifs
Probléme GMPProbléme avec les socket en C
probleme avec jcarouselliteCompatibilité Excel 2003 et Excel 2010
problème client-serveur (socket)programmation d'un serveur par socket en C++
socket UDP broadcast et multi-plateforme[RESOLU] socket inter-process C/PHP linux
[C][reseau] connection tcp (3 voies) raw socketattach message au socket au moement de l'exécution
Plus de sujets relatifs à : compatibilité GMP / socket


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