Bonsoir,
j'ai essayé de créer une application client/serveur permet d'envoyer un fichier en utilisant les socket en c.
l’exécution du programme signale une erreur de type :
Erreur de segmentation au moment de la réception des données:
voici le code de la fonction qui reçoit le fichier :
le code de la fonction qui envoi le fichier
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
26
27
28
29
30
31
32
33
34
35
36 int recvfile(int s,char* f){ int nbByte_lu, nbByte_ecrit ; FILE * file ; char buffer[MAX_SIZE]; file = fopen(f,"wb"); if(file==NULL){ printf("impossible de creer le fichier"); exit(-1); } printf("\n fichier cree ...ok"); memset(buffer,0,sizeof(buffer)); while(1){ printf("\n reception en cours...sur le socket: %d",s); nbByte_lu = recv(s,buffer,sizeof(char)*MAX_SIZE,0); // ==>Erreur apparait if(nbByte_lu<0){ perror("reception !!!"); return -1; } if(nbByte_lu==0){ break; } printf("\n reception %d octet",nbByte_lu); nbByte_ecrit = fwrite(buffer,sizeof(char),nbByte_lu,f); if(nbByte_ecrit!=nbByte_lu) return -1; } return 0; }
Merci de m'aider
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
26
27
28
29
30
31
32
33
34
35
36 int recvfile(int s,char* f){ int nbByte_lu, nbByte_ecrit ; FILE * file ; char buffer[MAX_SIZE]; file = fopen(f,"wb"); if(file==NULL){ printf("impossible de creer le fichier"); exit(-1); } printf("\n fichier cree ...ok"); memset(buffer,0,sizeof(buffer)); while(1){ printf("\n reception en cours...sur le socket: %d",s); nbByte_lu = recv(s,buffer,sizeof(char)*MAX_SIZE,0); if(nbByte_lu<0){ perror("reception !!!"); return -1; } if(nbByte_lu==0){ break; } printf("\n reception %d octet",nbByte_lu); nbByte_ecrit = fwrite(buffer,sizeof(char),nbByte_lu,f); if(nbByte_ecrit!=nbByte_lu) return -1; } return 0; }
E.Bazoga
Partager