[c]socket : transfert fichier
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:
1 2 3 4 5 6
|
typedef struct
{
char Buffer[500];
int finFich;
}sFich; |
COTE SERVEUR
Code:
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:
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 !