IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

lire un fichier http


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 27
    Par défaut lire un fichier http
    Bonjour,
    Je cherche un tutoriel ou une fonction qui me permette de lire un fichier (ou de le télécharger) présent sur un serveur web avec le protocole http.
    Pouvez-vous m'en indiquer ?
    Merci

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Il faut plus que le C++ standard pour faire ça.
    Par exemple Qt a des fonctions pour réaliser cette opération.
    Voir ici pour l'utiliser avec Visual Studio : http://arb.developpez.com/qt4/vc++/compilation/

  3. #3
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par the_penguin
    Bonjour,
    Je cherche un tutoriel ou une fonction qui me permette de lire un fichier (ou de le télécharger) présent sur un serveur web avec le protocole http.
    Pouvez-vous m'en indiquer ?
    Merci
    J'ai un code source tiré du Petzold en win32 si interessé pour Windows.
    M'envoyer un MP.
    Sous Windows il faut programmer WinInet il ya des fonctions pour cela...

  4. #4
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par Miles
    Par exemple Qt a des fonctions pour réaliser cette opération.
    Voir ici pour l'utiliser avec Visual Studio :
    Pas nécessaire d'avoir tout un framework pour cela; il suffit de prendre les fonctions de WinInet programmer un thread...
    en plus Qt c'est payant

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 27
    Par défaut
    Y a-t-il de la documentation en français sur wininet ?

    Sinon, en faisant des recherches sur wininet, j'ai entendu parler de MFC, qu'en pensez-vous ?

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par mat.M
    Pas nécessaire d'avoir tout un framework pour cela; il suffit de prendre les fonctions de WinInet programmer un thread...
    en plus Qt c'est payant
    Oui, ce n'est pas nécessaire, je n'ai pas dit le contraire.
    En revanche, Qt4 est dispo sous Windows, Linux et OSX sous licence GPL, donc gratuit.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 11
    Par défaut
    il suffit d'envoyer les bonnes commandes au serveur :
    GET /<chemin> HTTP/1.0 (pour eviter les caracteres chiants) quelques retours chariots a la fin et roulez !
    (ah un ptit host : domaine aussi )

    petite précision : j'utilise les sockets natifs là, et le code est prévu pour une plateforme *nix donc pour windows faut adapter avec les wasa start machin (cf faq, gardez votre cochonerie d'os :-")
    exemple pour une page index :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
        std::string resolv(const std::string url)
        {
          hostent *nom;
     
          nom = gethostbyname(url.c_str());
          std::cout << inet_ntoa(*(in_addr*)nom->h_addr_list[0]); 
          return inet_ntoa(*(in_addr*)nom->h_addr_list[0]);  
        }
     
        std::string getPage(std::string url)
        {
          std::cout << url << std::endl;
          int sockfd = socket(PF_INET, SOCK_STREAM, 0);
     
          std::string ip(""), msg(""), buffer("");
          char tmp[1024] = { 0 };
     
          sockaddr_in server;
     
          ip = resolv(url);
     
          server.sin_family = AF_INET;
          server.sin_port = htons(80);
          server.sin_addr.s_addr = inet_addr(ip.c_str());
          memset(&(server.sin_zero), '\0', 8);  // zero the rest of the struct
     
          int connec = 0;
     
          if((connec = connect(sockfd, (sockaddr*)&server, sizeof(sockaddr))) == -1)
            std::cerr << "Erreur avec connect()" << std::endl;
     
          msg = "GET / HTTP/1.0\nhost: " + url + "\n\n"; 
     
          if((send(sockfd, (void *)(msg.c_str()), msg.size(),0)) == -1)
            std::cerr << "Erreur lors de l'envoi de la commande" << std::endl;
     
     
          int rcv = 0;
     
          while((rcv = recv(sockfd, tmp, sizeof(tmp),0)) >0)
            buffer += std::string(tmp,rcv);
     
          // std::cout << buffer << std::endl;
     
          close(sockfd); 
          return buffer;
        }

  8. #8
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par the_penguin
    Y a-t-il de la documentation en français sur wininet ?

    Sinon, en faisant des recherches sur wininet, j'ai entendu parler de MFC, qu'en pensez-vous ?
    Prendre l'exemple de Fser mais créer un thread

Discussions similaires

  1. Réponses: 23
    Dernier message: 29/04/2014, 23h31
  2. Lire/Copier un fichier http
    Par LedZeppII dans le forum Contribuez
    Réponses: 3
    Dernier message: 21/08/2006, 20h46
  3. Lire un fichier txt par http (C sous Linux)
    Par sleg dans le forum Réseau
    Réponses: 4
    Dernier message: 18/10/2005, 11h07
  4. Lire un fichier de 50 gb
    Par Maryves dans le forum MFC
    Réponses: 2
    Dernier message: 08/01/2004, 14h08
  5. Lire le fichier du port série
    Par saibe dans le forum Linux
    Réponses: 7
    Dernier message: 09/04/2003, 09h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo