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
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 !
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
Merci!
Partager