begin process at 2012 05 29 18:56:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

[PB] telecharger une image


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[PB] telecharger une image

mardi 23 janvier 2007 à 18:57:25 | [PB] telecharger une image

sebastienmz

Bonjour a toutes et a tous !
voila j'ai du code qui télécharge l'image qui se trouve en haut de votre écran de cppfrance a gauche de fiche mais j'arrive qu'a récupèrer 7 octet voila mon code :
#include <winsock2.h>
#include <stdio.h>

#pragma comment(lib,"ws2_32.lib")

#define BUFSIZE 1024

#define HTTP_GET "GET "
#define HTTP_PROTO " HTTP/1.1\r\nAccept: */*\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)\r\nHost: " /*ok*/
void main(){
    
  WSADATA WSAData;
  WSAStartup(MAKEWORD(2,0), &WSAData);
  SOCKADDR_IN sin;
SOCKET sock;
  char body [90000];
  char header[1000];
  char tmp [1000];
  char path[100];
  char host[100];
  char file[90000];
  int error;
  char * p;
  int i,j,k;
  strcpy(path,"/g/usr.gif");
  strcpy(host,"cppfrance.com\r\n\r\n");
 
  sock = socket(AF_INET, SOCK_STREAM, 0);
  sin.sin_addr.s_addr            = inet_addr("213.161.194.215");
  sin.sin_family                = AF_INET;
  sin.sin_port                = htons(80);
                  
  error = -1;
 printf("connexion\n");
    error = connect(sock, (SOCKADDR *)&sin, sizeof(sin));
 
  if (error < 0)
   printf("erreur de connexion");
  
   strcpy(tmp,HTTP_GET);
  strcat(tmp,path);
  strcat(tmp,HTTP_PROTO);
  strcat(tmp,host);
   strcat(tmp,"\r\n\r\n");
   printf("%s",tmp);
  printf("envoi de la requete\n");
   send(sock, tmp, strlen(tmp), 0);
   printf("reception des données\n");
  
    recv(sock, header,sizeof(header), 0);
    printf("header :  %s\n /header",header);
   

    i=0;
   while(i<strlen(header))
  {
     char *buf = (char*)malloc(256);
     for(j=0;header[i+j]!='\r'||header[i+j+1]!='\n';j++)
        buf[j] = header[i+j];
     buf[j]='\0';
     printf("%s\n",buf);
     i+=j+2;
     if(strlen(buf)==0)
        break;
  }
  printf(" I = %d\n",i);
  k=strlen(header)-i;
  printf(" K = %d\n",k);
 for (j=0;j<=k;j++)
     body[j]=header[i+j];
 
  printf("Body %s \n /body",body);
 FILE* F;
   F=fopen("dasih.gif","wb");
   fwrite(body,strlen(body),1,F);
   fclose(F);

  system("pause");
}

Je vois pas ou j'ai un problème!

Sébastien Metthez
www.sebastien-metthez.com
le problème vient souvent de l'interface chaise cl
mardi 23 janvier 2007 à 21:17:38 | Re : [PB] telecharger une image

aardman

Membre Club
Salut,
Pas étonnant que ca marche pas, avec tout les strlen qu'il y a dans le code...
Refléchis un peu a ce que cette ligne fait: fwrite(body, strlen(body),1,F).
Le même probleme se pose quand tu fais un printf des données que tu recois, rien ne te dis qu'il s'agit bien d'une chaine de caractere valide (qui est terminée par un '\0').

Pour refaire ca en plus propre, je procederais comme ca:
1) tu met tout ce que tu recois dans un buffer (boucle de recv), evidemment il faut utiliser memcpy et pas strcpy pour copier les données, et pour la longeur des données recues il faut utiliser le retour du recv, et surtout pas utiliser strlen.
2) au début de ton buffer se trouve la réponse du serveur, qui se termine par \r\n\r\n: tu trouve sa position (au passage tu pourra, dans un second temp, extraire le code d'erreur http et le champ Content-Length, ca peut etre utile).
3) tu écris tout ce qui se trouve apres la réponse dans ton fichier.


Cette discussion est classée dans : printf, header, char, sin, tmp


Répondre à ce message

Sujets en rapport avec ce message

Problème de lecture fichier [ par nach73 ] J'ai un enorme probleme je n'arrive pas a lire dans mon fichierVoila la partie de mon programme.Si quelqu'un peux m'aide.Merci.//ouverture du fichier probléme tableau de char, 2dim--->1dim (en gros) [ par psyko_flex ] je doit rassembler les valeur d'uun tableau a 2 dim pour en faire un tableau a une dim!voila le code qui me pose problémevoid Btn (GtkWidget *widget,g URGENT: pb passage d'argument tableau de chaine de caracteres! [ par joduak ] Salut à vous! j'ai un problème de passage d'argument d'un tableau de chaine de caractere. Si quelqu'un à une idée, faire vite svp ! Voici mon code : transfert de fichiers [ par anonyme_man_in_this_world ] salut  !recemment ,j'ai testé le programme que j'ai deposé sur le site avec deux de mes amis et ça n'a pas l'air de fonctionner ,pourtant lorsque je t string.h, c_str() & char* [ par MyXiLo ] Bonjour,Il y a un petit quelque chose que je ne comprends pas avec les std::string de string.hstd::string Pouet="LALALALa";pr erreur completement inexplicable ! [ par anonyme_man_in_this_world ] salut  ! lorsque j' execute les deux programmes sur mon pc, tout marche bien ,meme si je valide l'ip internet . Mais lorsque je les ai testé avec mes scanf / printf avec variable char [ par domcergyitin95 ] Bonjour, je début en C, et j'ai un problème que je n'arrive pas à résoudre, malgré que le reste du programme soit plus complexe et que ça tourne bie Débutant demande aide en C [ par juancho2786 ] Bonjour tout le monde. Je voulais vous demandez si mon code était correcte? et comment faire pour aller à la ligne après chaque enregistrement? Merci problem avec un char[] [ par kibab ] Bounour a vous tous, je suis nouveau de ce langage et je m'amuse à faire des épreuves diverses.Ici il y a un petit example mais jái un problem:#includ


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales