Rechercher : dans
Par :

Problem d'envoi de fichier par socket en c

Dernière réponse le 26 déc 2008 à 23:29:11 sokman, le 8 déc 2008 à 19:44:10 
 Signaler ce message aux modérateurs

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++.

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « problem d'envoi de fichier par socket en c » dans :
[Gravure] Graver ou lire un fichier .NRG VoirUn fichier .NRG est une image de CD, c'est-à-dire une copie binaire d'un CD ou d'un DVD sous forme d'un fichier Les fichiers .NRG sont utilisables par des programmes de gravure ou bien des lecteurs de disques virtuels (tels que Daemon...
Utiliser TrueCrypt pour protéger l'accès à ses fichiers VoirVoici deux vidéos qui vous expliqueront comment utiliser TrueCrypt pour sécuriser vos fichiers. TrueCrypt est un logiciel gratuit qui permet de créer des disques chiffrés. C'est un logiciel gratuit et...
Fichier Hosts ou Lhosts : modification impossible VoirMessages d'erreur : Ces messages d'erreurs apparaissent lorsque vous essayez de modifier le fichier Hosts (ou Lmhosts) dans Microsoft Windows Vista depuis un compte administrateur : Accès à C:\Windows\System32\drivers\etc\ hosts refuséou...
Fichier NFO VoirFormat NFO Un fichier NFO est un fichier texte, c'est-à-dire un simple fichier contenant du texte au format ASCII. Un tel fichier accompagne généralement des fichiers en téléchargement pour apporter des informations additionnelles sur...
Qu'est-ce qu'un fichier? VoirQu'est-ce qu'un fichier? Un fichier est une suite d'informations binaires, c'est-à-dire une suite de 0 et de 1. Ce fichier peut être stocké pour garder une trace de ces informations. Un fichier texte est un fichier composé de caractères stockés...
Fichier TXT VoirFormat TXT Un fichier TXT est un fichier texte, c'est-à-dire un simple fichier contenant du texte au format ASCII. Pour ouvrir ou modifier un tel fichier, il suffit d'utiliser le bloc-notes ou un éditeur de texte traditionnel.

1

 M-01, le 26 déc 2008 à 23:29:11

Slt sokman

il ne faut pat utiliser fgets() pour lire ton fichier mais fread() et non fputs() pour écrir mais fwrite().

fread(&char,int size,int,file); -> idem pour fwrite()

On peut envoyer les données octet par octet ce qui est facile a mettre en place, mais je te conseil
plutot de développer un algo pour découper ton fichier binaire en blocs se qui permet un envoie plus rapide.
car de toute facon tu ne peut pas mettre toute les donnéés d'un fichier binaire dans un char [trop volumineu]
c'est pour cela quil faut découper ou envoyer octet par octet.

Répondre à M-01