Problem d'envoi de fichier par socket en c

dyroj Messages postés 123 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 18 juin 2012 - 8 déc. 2008 à 21:08
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 - 9 déc. 2008 à 09:28
Bonjour,
je veut envoyer un fichier(image, texte, executable) via les socket en c, j'ai créer mon programme et il marche que pour les fichier texte. Pour les image, musique .., tous se qui est en binaire sa marche pas.
voila mon code qui gere lenvoi de fichier:

//serveur
************************************************************­*********
char contenu_fichier[1024];
FILE* fichier = fopen(fichier.exe, "rb");

while (fgets(contenu_fichier, sizeof(contenu_fichier), fichier) != NULL)
{
send(s, contenu_fichier, sizeof(contenu_fichier), 0);//il envoi ligne par ligne en binaire
}
send(s_c, "fini", sizeof("fini"), 0); // il envoi "fini" pour dir au client de que lenvoi est terminer
fclose(fichier);

//client
*********************************************************************
char contenu_fichier[1024];
FILE* fichier = fopen("fichier.exe", "wb");

while (a)
{
recv(s, contenu_fichier, sizeof(contenu_fichier), 0);//il recoi

if (strcmp(contenu_fichier, "fini") == 0) a=0;//il verifi si lenvoi est fini

else fputs(contenu_fichier, fichier);//il ecri ligne par ligne dans le fichier

}
fclose(fichier);

*******************************************************************************************
jesper que vous avez compri mon probleme
et que vous allez maidéer.
merci a tous et a++.

1 réponse

fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
9 déc. 2008 à 09:28
Salut,

en regardant la MSDN j'aime pas cette définition (le mot string)  :
char*fgets(char*string,intn,FILE*stream);

Par contre je préfère celle là (mot buffer) :
size_tfread(void*buffer,size_tsize,size_tcount,FILE*stream);

C'est ce qu'on utilisait pour lire des fichiers binaires, les découper et les envoyer sur socket, donc change fgets en fread.
0
Rejoignez-nous