Librairie C pour récupérer du contenu web
Fermé
Thechooz
Messages postés
28
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
2 mai 2009
-
4 juil. 2008 à 10:20
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 - 4 juil. 2008 à 14:57
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 - 4 juil. 2008 à 14:57
A voir également:
- Librairie C pour récupérer du contenu web
- Recuperer video youtube - Guide
- Recuperer message whatsapp supprimé - Guide
- Web office - Guide
- Word a trouvé du contenu illisible - Guide
- Comment récupérer un compte facebook piraté - Guide
3 réponses
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
4 juil. 2008 à 10:33
4 juil. 2008 à 10:33
j ai fait un petit truc comme ca, je m en sert actuelement pour un projet.
Je ne te fournirai pas le code, mais je peux te guider.
tu utilises des sockets, tu te connectes sur ton serveur (ip, port80) en TCP
regardes la RFC du protocole HTTP
tu envoies comme requete "GET /fichier.xml HTTP/1.0\r\n\r\n"
et comme reponse tu aura HTTP/1.1 200 OK et plein de lignes avec les headers...
verifies que tu ai bien le code 200, et pas une erreur 404 par exemple (regardes les codes erreur HTTP)
chaque header se finit par \r\n
le dernier header se finit paar 2 fois \r\n et ensuite commence ton fichier
la taille du fichier t es donné par content-length.
ce programme n est psa difficile a faire, je te coneille de le faire par toi meme, tu en tirera une plus grande joie.
Personelement j utilise les sockets MFC (je sais, c est pas bien), et pas les socket traditioneles ...
si tu as d autrse questions, n hesite pas
ha oui. Je te conseille d utiliser ethereal pour expionner les donnés que tu envoies et recoit du réseau!
il t aidera a comprendre le fonctionnement.
Commence avec un simple fichier texte, avant de passer aux donnés binaires (plus facil pour voir ce qui se passe...)
Je ne te fournirai pas le code, mais je peux te guider.
tu utilises des sockets, tu te connectes sur ton serveur (ip, port80) en TCP
regardes la RFC du protocole HTTP
tu envoies comme requete "GET /fichier.xml HTTP/1.0\r\n\r\n"
et comme reponse tu aura HTTP/1.1 200 OK et plein de lignes avec les headers...
verifies que tu ai bien le code 200, et pas une erreur 404 par exemple (regardes les codes erreur HTTP)
chaque header se finit par \r\n
le dernier header se finit paar 2 fois \r\n et ensuite commence ton fichier
la taille du fichier t es donné par content-length.
ce programme n est psa difficile a faire, je te coneille de le faire par toi meme, tu en tirera une plus grande joie.
Personelement j utilise les sockets MFC (je sais, c est pas bien), et pas les socket traditioneles ...
si tu as d autrse questions, n hesite pas
ha oui. Je te conseille d utiliser ethereal pour expionner les donnés que tu envoies et recoit du réseau!
il t aidera a comprendre le fonctionnement.
Commence avec un simple fichier texte, avant de passer aux donnés binaires (plus facil pour voir ce qui se passe...)
Thechooz
Messages postés
28
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
2 mai 2009
1
4 juil. 2008 à 14:49
4 juil. 2008 à 14:49
Merci de ta réponse ! Mais... ouahh tu me parle chinois !
Désolé mais la programmation je m'y suis mis il y a pas très longtemps... Et les réseaux je suis vraiment pas assez calé pour comprendre tes explications.
J'ai cherché un peu sur google avant de poster et j'avais trouvé une librairie (libcurl) qui permettait à peu près ça mais apparemment elle ne permet de télécharger que les pages html. Donc j'avais espéré qu'il pouvait en exister une autre permettant de télécharger à peu près n'importe quel autre fichier... Le but étant de se passer des sockets, qui pour moi ne sont qu'un nom vaguement déjà vu ailleurs !
Bon du coup si d'après toi ce manque de connaissances risque de m'empecher de programmer ça, dis-le moi stp que je perde pas mon temps (ou reporte moi sur une petite doc explicative ce serait cool).
Merci !
Désolé mais la programmation je m'y suis mis il y a pas très longtemps... Et les réseaux je suis vraiment pas assez calé pour comprendre tes explications.
J'ai cherché un peu sur google avant de poster et j'avais trouvé une librairie (libcurl) qui permettait à peu près ça mais apparemment elle ne permet de télécharger que les pages html. Donc j'avais espéré qu'il pouvait en exister une autre permettant de télécharger à peu près n'importe quel autre fichier... Le but étant de se passer des sockets, qui pour moi ne sont qu'un nom vaguement déjà vu ailleurs !
Bon du coup si d'après toi ce manque de connaissances risque de m'empecher de programmer ça, dis-le moi stp que je perde pas mon temps (ou reporte moi sur une petite doc explicative ce serait cool).
Merci !
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
4 juil. 2008 à 14:57
4 juil. 2008 à 14:57
es ce que tu utilises visual studio ou un autre compilo ?
je te conseille d apprendre a utiliser les socket, vu que c est la base de la communication reseau.
tu cree une socket SOCK_STREAM (c est du TCP) car c est ce qui est utilisé par le protocole HTTP.
il te demande l ip et le port sur lequel connecter. tu met l IP de ton serveur web, et le port 80 (ca doit etre la fonction connect).
ensuite, tu fais un petit char requete[]="GET / HTTP/1.1\r\n\r\n";
tu fais un envoi qui doit ressembler a ca send (requete, strlen(requete)); ou send (masocket, requete, strlen(requete))
ensuite tu fais une receptioon dans un buffer, et tu traite ton buffer.. affiches le dans un premier temps pour voir ce que ca fait.
utilises wireshark pour voir si tes donnés sont bien envoyés sur le réseau
je te conseille d apprendre a utiliser les socket, vu que c est la base de la communication reseau.
tu cree une socket SOCK_STREAM (c est du TCP) car c est ce qui est utilisé par le protocole HTTP.
il te demande l ip et le port sur lequel connecter. tu met l IP de ton serveur web, et le port 80 (ca doit etre la fonction connect).
ensuite, tu fais un petit char requete[]="GET / HTTP/1.1\r\n\r\n";
tu fais un envoi qui doit ressembler a ca send (requete, strlen(requete)); ou send (masocket, requete, strlen(requete))
ensuite tu fais une receptioon dans un buffer, et tu traite ton buffer.. affiches le dans un premier temps pour voir ce que ca fait.
utilises wireshark pour voir si tes donnés sont bien envoyés sur le réseau