Envoyer un fichier par sockets

anonyme_man_in_this_world Messages postés 161 Date d'inscription samedi 25 juin 2005 Statut Membre Dernière intervention 1 août 2006 - 10 juil. 2005 à 18:44
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 11 juil. 2005 à 18:58
salut !!

comment envoyer un fichier FILE*fichier par sockets ?

ça sera simpa si on me donne un petit exemple

merçi d'avance ,
A++

8 réponses

Zootella Messages postés 252 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 5 septembre 2006 1
10 juil. 2005 à 23:13
Hum je dirais en récupérant la taille du fichier, puis faire une boucle du genre :



while (taile--)

{

ReadFile(fichier,data,512,&read,NULL)

send(socket,data,512);




}



et dans celui qui recoit:



while(taile--)


{



recv(socket,data,512);



WriteFile(fichier,data,512,&w,NULL))


}
0
Zootella Messages postés 252 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 5 septembre 2006 1
10 juil. 2005 à 23:14
Aussi, tu peux utiliser les fonctions std (pour FILE * file) au lieu des apis windows.
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 2
11 juil. 2005 à 00:45
Pas de boucle comme ca ! Puis ce que tu as la taille du fichier :

DWORD dwSize;
char *szBuf;

...
dwSize = GetFileSize(hfile, 0);
szBuf = HeapAlloc(hHeap, 0, dwSize + 1);
ReadFile(hfile, szBuf, dwSize, &dwRead, 0);
szBuf[dwSize] = 0;
send(socket, szBuf, dwSize);

...

+2(p - n)
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 2
11 juil. 2005 à 00:46
Attention par contre si dwSize > 8 ko ! Dans ce cas, lire 8 ko par 8 ko...etc

+2(p - n)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
anonyme_man_in_this_world Messages postés 161 Date d'inscription samedi 25 juin 2005 Statut Membre Dernière intervention 1 août 2006
11 juil. 2005 à 01:49
merçi pour l'idee cepandant j'ai deux petites questions ,pourquoi tu n'as pas

mis new ou malloc au lieu de HeadAlloc ? le hHeap est il un Handle declaré

justement pour etre utilisé dans cette fonction ?

A++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
11 juil. 2005 à 04:04
AlexMAN, on fait donc une boucle dans le cas général. Et pourquoi tu donnes 8ko comme limite, c'est toi qui choisis?
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 2
11 juil. 2005 à 12:53
C'est une limite de taille des messages que l'on peut envoyer (si je me souviens bien == a 8ko). A recuperer avec getsockopt() SO_MAX_MSG_SIZE.
Et pour ce qui est de la boucle, je suis d'accord, mais regarde la boucle de zootella...Il lit 512 octets, mais ne reduit la taille que de 1 octets, donc la va y avoir pb..

+2(p - n)
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
11 juil. 2005 à 18:58
Oui j'avais vu
0