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

Réseau C Discussion :

Récupérer contenu page HTML


Sujet :

Réseau C

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Points : 116
    Points
    116
    Par défaut Récupérer contenu page HTML
    Bonjour,

    je voudrais développer un petit programme qui récupère une page HTML (n'importe laquelle).

    J'ai fais quelques tests en utilisant telnet. J'envois une methode GET après, je dois envoyer deux retours chariots. Je n'ai pas réussi à effectuer cette dérnière opération. En suposant biensur que ce mon code est bon.

    Voici mon programme en l'état actuel :
    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
     
    #include <errno.h>
    #include <string.h>
    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
     
    int main (int agrc, char ** argv)
    {
    	int resSocket = 0;
    	int resSend = 0;
    	char buff[1024];
     
    	struct sockaddr_in addr;
    	addr.sin_family = AF_INET;
    	addr.sin_port = htons(80);
    	inet_pton(PF_INET, "88.191.250.104", &addr.sin_addr);
     
    	if((resSocket = socket(AF_INET, SOCK_STREAM, 0)) < 0)
    	{
    		fprintf(stderr, "le socket est ratte");
    		exit(errno);
    	}
     
    	if (connect(resSocket, (const void*)&addr, sizeof(addr)) < 0) 
    	{
    		fprintf(stderr, "la connexion a echoue");
    		exit(-1);
    	}
    	char * mesg = "GET http://lesite.org/2009/11/15/26161.html HTTP/1.0";
    	if((resSend = send(resSocket, (const void*)&mesg, strlen(mesg), 0)) < 0)
    	{
    		fprintf(stderr, "l'envois de la requete a rate\n");
    		exit(errno);
    	}
     
    	recv(resSocket, buff, 1024, 0);
    	printf("resultat : %s\n", buff);
    	close(resSocket);
    }
    Ma question est sans doute "bateau" est résolus depuis bien longtemps. Mais, je n'ai trouvé de réponses à ma question.

    Merci.

  2. #2
    Membre confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Points : 622
    Points
    622
    Par défaut
    Il faut utiliser les méthodes fread et fwrite pour lire/écrire dans les sockets.

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Points : 116
    Points
    116
    Par défaut
    Ahh

    j'ai suivi plusieurs tutos, ils parlaient tous de "send" et "recv". Ces méthodes sont-elles déprécated ?

    Edit :

    J'ai fini par trouver mon bonheur en utilisant read et write.
    Voici un bou de code qui fonctionne

    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
    57
     
    #include <netdb.h> 
    #include <string.h>
    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
     
    int main (int agrc, char ** argv)
    {
            int  sock = 0;
            char buff[512];
            char * mesg = "GET http://lesite.org/~pmanglade/29041.html\n";
            int nb_res = 0;
            struct sockaddr_in serveur_addr;
            struct hostent *serveur;
     
    // creation de la socket
            if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
            {
                    fprintf(stderr, "le socket est ratte");
                    exit(-1);
            }
    // recuperation des donnees dns du serveur
            if ((serveur = gethostbyname("www.lesite.org")) < 0)
            {
                    fprintf(stderr, "la recuperation du serveur a echoue");
                    exit(-1);
            }
    // initialisation de l'adresse
            bzero((char *)&serveur_addr, sizeof(serveur_addr));
            serveur_addr.sin_family = AF_INET;
            bcopy((char *)serveur->h_addr, (char *)&serveur_addr.sin_addr.s_addr, serveur->h_length);
            serveur_addr.sin_port = htons(80);
    // etablissement de la connexion
            if (connect(sock, &serveur_addr, sizeof(serveur_addr)) < 0)
            {
                    fprintf(stderr, "la connexion a echoue");
                    exit(-1);
            }
    // envois de la requete
            if (nb_res = write(sock, mesg, strlen(mesg)) < 0)
            {
                    fprintf(stderr, "l'ecriture dans la socket a echoue");
                    exit(-1);
            }
    // reception de la reponse
            bzero(buff, 512);
            if(nb_res = read(sock, buff, 511) < 0)
            {
                    fprintf(stderr, "la reception des infos a echoue");
                    exit(-1);
            }
    // affichage du resultat
            printf("%s\n", buff);
            return 0;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/01/2011, 10h58
  2. Comment récupérer contenu page html sans file_get_contents
    Par patriciaprovence dans le forum Langage
    Réponses: 7
    Dernier message: 04/02/2010, 14h42
  3. Réponses: 12
    Dernier message: 13/01/2010, 12h11
  4. Récupérer contenu balises HTML
    Par Sopra dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/04/2007, 16h45
  5. Récupérer infos page html pour les insérer dans Outlook
    Par andromede88 dans le forum Windows
    Réponses: 4
    Dernier message: 21/09/2006, 14h21

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