bosure | Bonjour,
j'utilise la bibliothéque GMP, j'ai defini une structure (je doit envoyer des valeurs de variable avec les socket):
Code :
- struct variabletype
- {
- char nom;
- mpz_t valeur;
- };
|
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 :
- void send2 (SOCKET sock,struct variabletype variable)
- {
- if(send(sock,&variable,sizeof(variable),0)!=SOCKET_ERROR)
- printf(" envoi effectuer %c \n",variable.nom);
- else
- perror("envoi" );
- }
- void recv2 (SOCKET sock,mpz_t * var ,char cvar)
- {
- struct variabletype variable;
- mpz_init(variable.valeur);
- if(recv(sock,&variable,sizeof(variable),0)!= SOCKET_ERROR)
- {
- printf(" recu: %c :: \n",variable.nom);
- gmp_printf("variable.valeur= %Zd \n",variable.valeur);
- if(variable.nom == cvar)
- {
- mpz_init_set(* var,variable.valeur);
- }
- else
- printf("probleme d'envoie\n" );
- }
- else
- perror("recv" );
- }
|
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. |