Télécharger une page html

alphaone Messages postés 134 Date d'inscription vendredi 2 mai 2003 Statut Membre Dernière intervention 14 novembre 2009 - 18 mars 2006 à 17:22
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014 - 19 mars 2006 à 01:50
Comment télécharger une page html puis en extraire que la chaine qui vas de l'octect X à Y?
C'est urgent, j'ai plus qu'une heure de baterie.
Merci.

3 réponses

MuPuF Messages postés 536 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 août 2008
18 mars 2006 à 18:12
avec winsock, tu te connecte au serveur de cette page web, tu utilise la commande HTTP GET et tu recevra dans ton buffer la page
0
cs_magma Messages postés 198 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 18 mars 2011
18 mars 2006 à 19:56
Petit exemple ici :

// MonIP.c -------------------------------------------------------------------


#include <windows.h>
#include <winsock2.h> //LIB: ws2_32.lib ou libws2_32.a


#define PORT 80
#define SIZE 2048
#define GET "GET /"
#define HOST "checkip.dyndns.org"
#define PAGE "/"


//----------------------------------------------------------------------------
int Erreur(char *Fonction)
{
char Text[128];
int Error = WSAGetLastError();
wsprintf(Text, "Fonction : %s \nCode : %d", Fonction, Error);
MessageBox(NULL, Text, "Erreur !", MB_OK | MB_ICONERROR);
WSACleanup();
return Error;
}


//----------------------------------------------------------------------------
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpszArgs, int nMode)
{
int r;
SOCKET s;
WSADATA wsa;
SOCKADDR_IN Serv;
LPHOSTENT Host;
char Page[SIZE];


if(WSAStartup(0x0202, &wsa) != NO_ERROR)
return Erreur("WSAStartup()");

if(!(Host = gethostbyname(HOST)))
return Erreur("gethostbyname()");


Serv.sin_family = Host->h_addrtype;
Serv.sin_port = htons(PORT);
Serv.sin_addr.s_addr = *((unsigned long *)Host->h_addr);
if((s socket(AF_INET, SOCK_STREAM, 0)) INVALID_SOCKET)
return Erreur("socket()");

if(connect(s, (SOCKADDR *)&Serv, sizeof(Serv)) == SOCKET_ERROR)
return Erreur("connect()");


wsprintf(Page, "%s%s HTTP/1.1\r\nHost: %s:%d\r\n\r\n", GET, PAGE, HOST, PORT);
if(send(s, Page, lstrlen(Page), 0) == SOCKET_ERROR)
return Erreur("send()");


if((r recv(s, Page, sizeof(Page), 0)) SOCKET_ERROR)
return Erreur("recv()");


// Affiche la page entiere
Page[r] = 0;
MessageBox(NULL, Page, "Page Entière", MB_OK);


// Affiche l'IP uniquement
*(strstr(Page, "")) = 0;
MessageBox(NULL, strstr(Page, "Address:") + 9, "Mon IP", MB_OK);

closesocket(s);
WSACleanup();
return 0;
}
0
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
19 mars 2006 à 01:50
WinInet (MSDN) si tu veux pas trop te casser le tête, ensuite pour les octets bah euuu memcpy et tout le tralala. Mais l'exemple en haut fait aussi.

A+

http://vbaddons.free.fr

if (CPossible)
0
Rejoignez-nous