Bonjour,

J'essaye d'envoyer une matrice de float (tableau à deux dimensions) par socket, avec les cours sur internet j'arrive bien à envoyer d'un client vers un serveur une chaine de caractère ainsi que des structures. Du coup mon idée était justement d'utiliser des structures afin d'envoyer mon tableau à deux dimensions. Du coup je crée un tableau 2*2 que je copie dans ma structure et je l'envoie. Le problème est que quand j'essaye de la récupérer j'ai une erreur de segmentation, et je ne vois absolument pas d'où ça peut venir ?


Voici le code en question du côté serveur:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//Création de la structure
    typedef struct Image Image;
struct Image{
    float** tabImage;
};
 
    float **tab2=NULL;
tab2=allocation(2,2);
tab2[0][0]=2.0;
tab2[0][1]=4.32;
    tab2[1][0]=1.47;
    tab2[1][1]=8.37;
 
Image NewImage;
NewImage.tabImage=allocation(2,2);//Fonction qui alloue dynamiquement la matrice
int i,j;
 
     //Recopie les valeurs de tab2 dans la structure
 
     for(i=0;i<2;i++)
    for(j=0;j<2;j++)
        NewImage.tabImage[i][j]=tab2[i][j];
 
     //Envoie la structure
 sock_err = send(csock,&NewImage,sizeof(NewImage), 0);


Et voici le code en question côté client
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
/*Déclaration de la structure coté client
typedef struct Image Image;
    struct Image{
        float** tabImage;
    };
 
    Image NewImage;
    NewImage.tabImage=allocation(2,2); //allocation  dynamique du tableau
    recv(sock,&NewImage.tabImage ,sizeof(NewImage), 0);
//Reception de la structure
Je n'ai pas mis le reste de la fonction car je pense que l'erreur vient de ces lignes (car ça marche bien sinon avec une chaine de caractère ou une structure avec des int, double...),mais si il faut je la mettrai sans problème !

Merci !