begin process at 2012 05 28 08:44:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

Client html


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Client html

dimanche 18 juillet 2004 à 18:29:22 | Client html

elinep

Voila le code d'un petit client html que j'ai trouve sur cppfrance:

#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.google.fr"); //l'adresse du site

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.google.fr 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;
}

Alors il marche tres bien sauf que lorsque je veux acceder a un site perso avec (au hasard http://toto.chez.tiscali.fr) je me retrouve avec une page d'erreur alors que le site est accessible sous internet explorer.
PK? :p
Comment on peut faire?
dimanche 18 juillet 2004 à 18:58:38 | Re : Client html

LordBob

Membre Club
donne l'adresse, de la source d'ou tu sors le code...
Bob...

"La chance accorde ses faveur aux esprits avertis..."
dimanche 18 juillet 2004 à 19:08:41 | Re : Client html

elinep

Bah ca devrait pas t'avancer mais bon...
http://www.cppfrance.com/forum.v2.aspx?ID=158608
dimanche 18 juillet 2004 à 19:18:37 | Re : Client html

aardman

Membre Club
Salut,
C'est moi l'auteur de cette horrible chose.
J'avais fait ca en exemple a quelqu'un qui voulait faire une requette http, mais ce n'est pas un exemple a suivre car c'est simplifié au max et il n'y a aucun traitement du header http ni de traitement d'erreur.

Sinon pour tes questions:
La requette HTTP/1.0 doit se terminer par \r\n\r\n et non pas par \n\n comme je faisais a l'epoque.

Ensuite, il fait spécifier l'url d'un fichier,
http://www.google.fr n'est donc pas valide.
dimanche 18 juillet 2004 à 19:20:43 | Re : Client html

LordBob

Membre Club
mais en fait tu veux simplement recupéré le code source de la page html de l'adresse demandé?
si oui il y a une API window qui le fait... regarde dans mes sources, il y a son exemple...

bon sinon dans ton exemple la, il me semble que si ca ne marche pas c'est parce que "host = gethostbyname("www.google.fr"); //l'adresse du site" n'est pas correcte par rapport au site que tu demandes...
par exemple si tu demandes un site wanadoo a gethostbyname doit etre "perso.wanadoo.fr"...
Bob...

"La chance accorde ses faveur aux esprits avertis..."
dimanche 18 juillet 2004 à 19:40:10 | Re : Client html

elinep

Bah non pour google.fr ya aucun probleme
mais pour toto.chez.tiscali.fr ca ne marche pas...
dimanche 18 juillet 2004 à 19:46:50 | Re : Client html

elinep

et j'ai deja essayer en mettant par exemple perso.wanadoo.fr pour un site perso wanadoo mais ca ne marche pas non plus.
Dasn ce que je cherche a faire en plus je n'ai pas besoin de recevoir la page je veux juste faire une requete...
Donc j'essayais de me connecter a un site avec ce bout de code...
C'est quoi le header http??
dimanche 18 juillet 2004 à 19:54:09 | Re : Client html

aardman

Membre Club
Salut,
Le header http c'est la réponse que le serveur http te fourni.
Si la réponse est 200, alors c'est OK, le server envoie le fichier tout de suite apres le header (header et fichier sont séparés par une ligne vide).
Par contre s'il la réponse est differente de 200, alors il y a une erreur (donc pas de fichier).

Comme je l'ai précisé plus haut, aucun traitement du header n'est fait dans ce bout de code. En gros, on se connecte, on envoie la requette, et on affiche ce qu'on recoit sans chercher a comprendre s'il y a eu une erreur.
dimanche 18 juillet 2004 à 20:08:36 | Re : Client html

elinep

Ouai bah ca me convient parfaitement ca :)
Alors comment se fait il que ie arrive a se connecter a toto.chez.tiscali.fr et pas ton prog?
Au debut il ne dispose que de cette adresse =>
gethostbyname() ca sera avec toto.chez.tiscali.fr non?
de meme pour la requete.
Apres je recois une erreur 302 kesako? et bien : Moved Temporarly. Les donnees demandees ont ete trouvees a une nouvelle url, mais ont cependant peut etre ete deplacees temporairement.
Hum hum...
dimanche 18 juillet 2004 à 20:11:45 | Re : Client html

aardman

Membre Club
Salut,
Si tu recois une erreur 302: Moved Temporarly, c'est bien la preuve que tu es connecté au serveur...

1 2

Cette discussion est classée dans : http, socket, sin, buf, addr


Répondre à ce message

Sujets en rapport avec ce message

Probleme de Socket [ par Basica ] Bonjour, j'ai un petit problème avec winsock que je n'arrive pas à résoudre. Mon but est de récuppérer des pages internet en utilisant winsock en C/C Problème serveur http, requêtes successives [ par lkm ] Bonsoir à tous,je suis en train de réaliser un petit client http qui à pour but de me loguer sur un site puis de parcourir quelques pages de ce même s CreateProces et fork [ par laetitiavincent ] Bonjour tout le mondeAlors je sais que fork n'existe pas sous windows. On peut utiliser CreateProcess mais mon souci et que je mélange ca avec un sock Multiples messages non reçus...:(( [ par Gendal67 ] Bonsoir tout le monde!Je suis actuellement en cours d'apprentissage des Sockets et j'ai crée une application Client/Server pouvant communiquer ensembl mail - socket - pk sa déconne ?!? [ par Gendal67 ] Bonsoir,Alors la, jvous en prie aidez moi avant que je ne prenne mon clavier, ma souris, mon modem et tout le reste et que je les cognent du +fort que Documentation Reseaux [ par SnowBlade360 ] Bonjour J'ai trouver sur inernet du code afin de crée une socket mais j'aimerais connaitre exactement tout les champs qui la compose voici mon code : http ip... [ par xionoxid ] BonjourJ'ai un petit problème, je voudrais aller sur un site persol'adresse est par exemple :http://XXXXXX.HEBERGEUR.COMdans mon programme je dois met TimeOut sur un socket [ par djosh ] Voici un bout de code des sources du logiciel VNC, la fonction connect(). Mon but est de réduire le temps de réponse (message:"failed to connect to se programmation socket [ par samijaba ] je suis entraint de dévélopper une application réseaux (client/serveur)mon probléme est que lorsque j'essai de connecter hors de réseau local il n'y a Socket Requette HTTP Post - Enlever le header de la réponse [ par SuperChouquette ] Bonjour, je suis débutant et à l'aide d'autres sources j'ai créer une fonction pour envoyer une requete POST à un serveur web, celle-ci fonctionne bie


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales