Socket

Résolu
casper_2 Messages postés 93 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 30 mai 2005 - 17 janv. 2005 à 12:47
casper_2 Messages postés 93 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 30 mai 2005 - 17 janv. 2005 à 17:08
Excuser moi,bonjour.J'ai un leger problem avec les sockets.
kan je te recupere les données d'un fichier zipé sur un serveur,a l'ouverture de ce fichier,on le dit k'il est corrompu.
De plus,j'ai remarquer kil est differement du fichier d'origine.
Quelkun pourrait til maider svp.

CASPER

10 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 4
17 janv. 2005 à 17:01
Salut,
Pas exactement, disont que quand tu recois la reponse http, tu as la taille du fichier, et cette taille peut te servir a controler si la taille des données que t'a envoyé le serveur est correcte.
Tu n'est pas obligé de le faire, mais je trouve que c'est une sécurité.

Aussi je pense que tu devrais utiliser un buffer de reception plus grand (plusieurs Ko).
3
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 4
17 janv. 2005 à 14:48
Salut,
Comment veux-tu qu'on t'aide, tu n'a pas posté une ligne de code...
0
casper_2 Messages postés 93 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 30 mai 2005
17 janv. 2005 à 15:25
Voici mon code,dzl:
GET /users/b.guilhaume@kia.fr/Kia_stats_provisoires_vpn.ZIP HTTP/1.0 \nAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,application/x-shockwave-flash,*/* \nReferer:http://serv.aaa.asso.fr/users/b.guilhaume@kia.fr/Kia_stats_provisoires_vpn.ZIP \nAccept-Encoding:x-gzip, deflate \nhost:serv.aaa.asso.fr \nConnection:keep-Alive\n\n"

connect(sd1,(SOCKADDR*)&sinDistant,sizeof(SOCKADDR_IN));
send(sd1,requete,strlen(requete),0);
f=fopen("ok.ZIP","w+b");
while((ByteRecv=recv(sd1,tampon,4,0)!=0))
fwrite(&tampon,sizeof(char),4,f);
fclose(f);

Voila,et kan je souhaite lire mon "ok.zip",il me dit kil est corompu et j'ai remarquer kan je le techarge depuis internet explorer,pour verifier si les donné sont idem,ben c legerement differement,je pense ke sa mon problem!

mercie pouir votre et desoler aardman

CASPER
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 4
17 janv. 2005 à 15:40
Salut,
Apres que tu ai envoyé ta requetes, tu écris tout ce que tu recois directement dans le fichier... sans enlever la reponse http du serveur. Il faut commencer a écrire apres avoir recu et traité la reponse http (car contient la taille exacte du fichier téléchargé).
0

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

Posez votre question
casper_2 Messages postés 93 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 30 mai 2005
17 janv. 2005 à 15:47
Ben justement peut tu me doner un peu la syntaxe,car moi g fè ainsi,mais elle ne ma pa l'air optimiset et coherente.si tu a meiux,ecrit la moi stp,car je joue trop sur la taille de tampon,sa menerve..merci

//ici c le bloc d'en tete,ki n'est pa copier
send(sd1,requete,strlen(requete),0);
recv(sd1,tampon,268,0);

f=fopen("ok.ZIP","w+b");

while((ByteRecv=recv(sd1,tampon,4,0)!=0))
fwrite(&tampon,sizeof(char),4,f);

CASPER
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 4
17 janv. 2005 à 16:00
Salut,
L'entete n'est pas de taille fixe, elle est terminée par un \r\n\r\n.
Donc une fois que tu as envoyé ta requete, tu écris tout ce que tu recois dans un buffer tant que tu n'a pas recu le \r\n\r\n, puis tu analyse le buffer pour trouver la taille de fichier (je pense que c'est indispensable) et enfin a partir de la tu écris tout ce que tu recois dans le fichier.
0
casper_2 Messages postés 93 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 30 mai 2005
17 janv. 2005 à 16:13
aardman,je te remercie de bien vouloir m'aider,,mais franchement j'orai du mal a faire la syntaxe,tu vois c la fin de programme,sinon tout fonctionne et en plus c pour un stage.
Stp,sa ne serait pa possible ke tu me passe la syntaxe stp.
Sinon g pa trob bien compris kantu le dis ke janalyse le buffer.
merci

CASPER
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 4
17 janv. 2005 à 16:35
Salut,
C'est pas trop mon style de coder pour les autres, désolé.
Sinon par "analyser le buffer", je voulais dire qu'il fallait extraire les infos qui t'interessent du buffer qui contient la reponse http, c'est a dire: la taille du fichier, et le numéro de réponse du serveur (200 si tout va bien).
Dans mon prog "telecharger un fichier" present sur ce site, c'est la fonction ParseHeaderHttp() qui analyse la reponse du serveur http.
0
casper_2 Messages postés 93 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 30 mai 2005
17 janv. 2005 à 16:45
Avant de cloturer se sujet,je recapitule,cke tu ma dis.
dans ma premiere reception ,tant ke tampon est different de \r\n\r\n,je copie dans un buffer ce ke je recois,puis je preleve la taille du fichier.
Je refais un nouvelle reception en precisant maitenant,la taille du fichier kom buffer,, c ca?
CASPER
0
casper_2 Messages postés 93 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 30 mai 2005
17 janv. 2005 à 17:08
ok mercie de to aide

CASPER
0