bonjour !
Voilà le but de mon appli :
l'histoire se passe en TCP...
c'est un client qui se connecte auprès d'un serveur et qui lui demande de lui envoyer un fichier.
le client reçoit donc paquets par parquets le fichier en question et le stock ainsi que certaines caractéristiques dans une strucuture. Ceci fait, il veut le reconstituer dans le répertoire courant à coup de fwrite.
voici le code de cette dernière partie :
j'ai l'affichage "avant fopen", mais pas le suivant "après fopen". le programme restant bloqué indéfiniment à la manière d'une boucle infinie. Je ne comprend pas ce qu'il se passe.
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
37
38 struct stFichier { char * cstNomFichier; int iTailleTotale; int * iPaquets; char ** tabPaquets; }; int reconstFichier(struct stFichier stFich) { printf("dans reconst fichier\n"); printf("nom = %s\n",stFich.cstNomFichier); printf("taille =%d\n",stFich.iTailleTotale); int ok = 1; printf("avant fopen\n"); FILE * ptrFichier = fopen(stFich.cstNomFichier,"w+"); printf("après fopen\n"); if(ptrFichier == NULL) { perror("erreur ouverture lors de la reconstitution ->"); return -1; } int i=0; printf("avant while\n"); while((stFich.iPaquets[i]>0)&&(i<stFich.iTailleTotale)) { printf("reconst fichier -> %s\n",stFich.tabPaquets[i]); fwrite(stFich.tabPaquets[i],sizeof(char),strlen(stFich.tabPaquets[i]),ptrFichier); i++; } printf("après while\n"); fclose(ptrFichier); ptrFichier = NULL; ajoutFichier(stFich); return ok; }
les affichages précédent du nom et de la taille du fichier sont correctes.
Pourriez vous m'aider ?
Ardeciel
Partager