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 :

[HTTP] recuperer un jpg du net


Sujet :

C++

  1. #1
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut [HTTP] recuperer un jpg du net
    Bonjour,

    je realise actuellement un programme d affichage de webcam qui est mise a jour toute les x secondes

    je recupere actuellement les jpg avec la fonction URLDownloadToFile (urlmon.lib) mais ca n est pas tres optimisé car ca oblige a ecrire le jpg sur le disque alors qu un simple lecture des données en ligne suffirait

    qu auriez vous a me conseiller pour realiser cela?

    merci d avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Dans ton cas ca serait simple d'utiliser un socket pour faire toi meme la requete http appropriee pour recuperer ton image. Je peux te paster un bout de code si tu en as besoin.

  3. #3
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    oui , c est ce que je pensais , mais je me demandais si il n existait pas une librairie toute prete plus approprié

    sinon je veux bien voir ton bout de code , mon programme tourne sous windows , sans MFC (openGL + SDL)

    merci d avance

  4. #4
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    t'a une extension SDL_net en totu cas pour gerer les socket

  5. #5
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    exact oui , je l ai deja utlisé en plus, suis je bete ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Voila un example de fonction qui fait une requete http pour aller chercher un fichier sur internet. J'utilise un TCPSocket, une petite classe que je me suis fait pour gerer les socket, mais c'est tres bien applicable (la facon de faire la requete http) avec n'importe quelle fonction permettant de gerer les socket, sdl ou autre.

    En esperant que cela puisse etre utile.

    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
    49
    50
    51
    52
    53
    54
    55
    56
    Bool HttpFile::Open(const std::string &fileName, File::MODE mode)
    {
        TCPSocket   m_socket(TCPSocket::CLIENT);
     
        if((mode & File::READ) != File::READ)
            return False;
     
        std::string host(fileName), resource;
        //std::transform(host.begin(), host.end(), host.begin(), &std::tolower<std::string::value_type>);
        std::transform(host.begin(), host.end(), host.begin(), tolower);
     
        if(host.find("http://") != 0)
            return false;
     
        std::string::size_type pos = host.find("/", 8);
        if(pos == std::string::npos)
        {
            resource = "/";
            host = host.substr(7, host.length() - 7);
        }
        else
        {
            resource = host.substr(pos, host.length() - pos);
            host = host.substr(7, pos - 7);
        }
     
        if(!m_socket.Connect(host.c_str(), 80))
            return False;
     
        std::string header = "GET " + resource + " HTTP/1.0\n"
                           + "Host: " + host + "\n"
                           + "User-Agent: HttpFile\n"
                           + "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"
                           + "Accept-Language: en-us,en;q=0.5\n"
                           + "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\n"
                           + "Connection: close\n\n";
     
        m_socket.Send(header.c_str());
     
        Char buffer[maxPacketSize];
        uint ret;
        while((ret = m_socket.Recv(buffer, maxPacketSize)) != 0)
        {
            GrowBuffer(ret + 1);
            memcpy(ADD_POINTER(Char*, m_buffer, m_length), buffer, ret * sizeof(Char));
            m_length += ret;
        }
     
        m_buffer[m_length] = 0;
     
        std::cout << "Received: " << m_buffer << std::endl;
     
        m_socket.Disconnect();
     
        return True;
    }
    Tu peux aussi utiliser un sniffer de packet tcp si tu veux voir comment ca fonctionne quand le browser fait la meme chose, ou bien te referer au RFC qui decrit le protocole HTTP.

Discussions similaires

  1. dialogue HTTP entre PHP et ASP.NET
    Par sandes84 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 18/03/2012, 13h15
  2. recuperation des données sous .net
    Par draman212 dans le forum VB.NET
    Réponses: 2
    Dernier message: 24/03/2010, 16h10
  3. [VB.Net] coment faire pour recuperer un fichier en HTTP
    Par vijeo dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/03/2006, 13h18
  4. [C#] Récupérer http://server_name/nom_appli ?
    Par drasis dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/04/2004, 16h09
  5. [VB.NET]Recuperation de variable dans un URL...
    Par seb_acsg dans le forum ASP.NET
    Réponses: 11
    Dernier message: 28/01/2004, 14h01

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