Récupérer une page web

micfrip Messages postés 21 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 6 mars 2006 - 14 nov. 2003 à 11:00
ipeteivince Messages postés 4 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 20 juin 2006 - 20 juin 2006 à 14:56
Bonjour à tous,

Etant assez novice en matière c/c++, je souhaite vous soumettre mon petit projet.

Je possède un serveur Linux sur lequel j'héberge mon site. Je voudrais récupérer l'ip publique de mon routeur en allant sur une page extérieure qui indique cette ip ( du style http://www.facultyof1000.com/whatsmyip.asp )

Ma question est de savoir comment allez rechercher une page web et la stocker pour pouvoir ensuite la lire et récupérer ce qui m'intéresse.

D'avance, merci de votre aide.

5 réponses

LuckyNut Messages postés 47 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 11 mars 2009
15 nov. 2003 à 16:39
Soit tu utilise les sockets, mais si tu es novice ca rique d'etre un peu trop compliqué (quoi que...) sinon voici un petit bout de code :

#define TAILLEMAX 10000 // entre une taille assez grande pour accueillir ta page 

CStdioFile *fic;
CInternetSession session;
int taille=TAILLEMAX
char buffer[TAILLEMAX];

session.AssertValid();
fic = session.OpenURL("http://www.machin.com"l, 0, INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_KEEP_CONNECTION);

if(fic==NULL) {
    return;
}

fic->Read(buffer,taille));

fic->Close();

////Ca y'est ta page est dans buff


Voila, j'espère que ca t'aide !

A+
0
LuckyNut Messages postés 47 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 11 mars 2009
15 nov. 2003 à 16:42
Désolé au moment ou je poste ce message, je m'aprecois que tu es sous Linux...

Ca va pas marcher !
Utilise les sockets !

A+
0
micfrip Messages postés 21 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 6 mars 2006
15 nov. 2003 à 17:45
Ah bon ? On ne sait pas utiliser cette méthode avec Linux ?

Bizarre.

Enfin, merci de ton aide en tous cas !
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
15 nov. 2003 à 18:28
Salut,
Ci joint un bout de code qui se connecte a http://www.facultyof1000.com, qui effectue la requete http://www.facultyof1000.com/whatsmyip.asp, et qui l'affiche.

Alors, j'ai jamais touché a linux donc je sais pas vraiment si c'est "portable". Mais c'est codé avec les sockets simples donc je pense que tu n'aura pas trop de mal a adapter tout ca selon tes besoins.

#include <stdio.h>
#include <winsock2.h>
#include <windows.h>
#pragma comment(lib, "ws2_32.lib")

SOCKET s;
in_addr addr;
sockaddr_in sin;
hostent * host;
WSADATA wsa;
char buf[1024];
int octet = 0;

int main(void)
{
WSAStartup(0x0202, &wsa);

s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(s == SOCKET_ERROR){
printf("socket : %d\n", WSAGetLastError());
}

host = gethostbyname("www.facultyof1000.com");

memcpy(&addr, host->h_addr, host->h_length);
sin.sin_family = AF_INET;
sin.sin_port = htons(80); // HTTP
sin.sin_addr = addr;

if(SOCKET_ERROR == connect(s,(sockaddr*)&sin, sizeof(sin))){
printf("connect : %d\n", WSAGetLastError());
}

strcpy(buf, "GET http://www.facultyof1000.com/whatsmyip.asp HTTP/1.0\n\n"); // la requete http
send(s, buf, strlen(buf), 0);

octet = recv(s, buf, sizeof(buf), 0);

for(int i=0; i<octet; i++)
printf("%c", buf[i]);

closesocket(s);
WSACleanup();
return 0;
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ipeteivince Messages postés 4 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 20 juin 2006
20 juin 2006 à 14:56
Salut moi je suis sous windows, mais le code :
#define TAILLEMAX 10000 // entre une taille assez grande pour accueillir ta page

CStdioFile *fic;
CInternetSession session;
int taille=TAILLEMAX
char buffer[TAILLEMAX];

session.AssertValid();
fic = session.OpenURL("http://www.machin.com"l, 0, INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_KEEP_CONNECTION);

if(fic==NULL) {
return;
}

fic->Read(buffer,taille));

fic->Close();

////Ca y'est ta page est dans buff

Me renvoie l'erreur CStioFile undeclared, firts use in this program.

Quel est le paquet à ajouter ?
0
Rejoignez-nous