salut a tous !

voila, j'ai un soucis en c :
je souhaite transmettre des fichier via socket pour un p2p. le probleme est que le transfert se passe mal sans que je comprenne ... voila mon code :

STRUCTURE COMMUNE :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
typedef struct
{
    char Buffer[500];
    int finFich;
}sFich;
COTE 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
26
27
 
void RecevoirFich(SOCKET sock , char * Trame)
{
    char tmpNom[499];
    char tst;
    int sortie = 0;
    int lngRcv;
    int i = 0 , j = 1;
    for(i,j; Trame[j] != '\0';i++,j++)
        tmpNom[i] = Trame[j];
    tmpNom[i] = '\0';
    printf("3 - reception fichier : %s\n",tmpNom);
    FILE * Fich = fopen(tmpNom,"wb");
 
    sFich buff;
    buff.finFich = 0;
 
    if(Fich != NULL )
    {
        while( buff.finFich == 0)
        {
            recv(sock, &buff, sizeof( buff ) , 0);
            fwrite(buff.Buffer , 1 , strlen(buff.Buffer)*sizeof(char) , Fich);
        }
        fclose(Fich);
    }
}
COTE CLIENT :
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
 
void envoyerFichier(SOCKET sock,char * Buff)
{
    char NomFichier[499];
    char buff[500] ;
    sFich buffer;
    buffer.finFich = 0;
    int i = 0 , j = 1;
    for(i,j; Buff[j] != '\0';i++,j++)
        NomFichier[i] = Buff[j];
    sendBuff(sock , Buff);
    FILE* fichier =fopen(NomFichier , "rb");
 
    if ( fichier != NULL) // ce test échoue si le fichier n'est pas ouvert
    {
        while (buffer.finFich == 0)
        {
            if( fread( buffer.Buffer , sizeof(char) , 500 , fichier ) <= 0)
                buffer.finFich = 1;
            send(sock, &buffer, sizeof(buffer), 0);
            printf("%s\n" , buffer.Buffer);
            memset(buffer.Buffer,'\0',(500-1));
        }
 
        printf("envoi %s fini \n", NomFichier);
        fclose(fichier);
    }
    else
        printf("erreur ouverture fichier\n");
}

je signale juste que le transfert de fichier txt marche trés bien ...

merci d'avance !