Bonjour,
j'essaye de créer une sorte d'aspirateur web,
mon application télécharge les pages web d'un site,
je me connecte une première fois au site avec la fonction
Je suis bien connecté, je recois correctement et intégralement les données de la première page que je demande, dans l'entete http de la réponse du serveur, il y a marqué : "connection: close" ce qui signifie que le serveur va fermer ma connection après m'avoir transmit l'intégralité de la page, je prend note et donc avant de télécharger la deuxième page je me reconnecte, mais le connect() cette fois ci me renvoie une valeur < 0, ce qui signifie qu'il y a une erreur, j'essaye d'obtenir l'erreur avec un :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 connect(...)
qui me renvoit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 errno = WSAGetLastError(); printf("errno : %i %s\n",errno,strerror(errno));
Bref incompréhensible, mais je relance mon application cette fois ci en ignorant l'échec du deuxième connect() et j'essaye d'envoyer des données au serveur malgrès avoir recu, encore une fois, un "connection: close" dans l'entete http lors du téléchargement de la premiere page (c'est volontaire car je ne l'utilise pas les connexions persistantes du protocole http 1.1 mais je souhaite le faire ainsi pour le moment).errno : 10056 Unknown error
La fonction send qui demande la deuxième page :
Ne me renvoie pas d'erreur ! Alors que je ne me suis pas reconnecté je le rappelle. Donc j'essaye de lire la réponse du serveur et la fonction recv
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 send(...)
Me renvoie 0, pas -1, ce qui veut dire que je suis bien connecté au serveur, malgrès donc avoir recu "connection: close" précédemment, mais il me renvoie 0, j'ai donc rien à lire, je ne recoit pas ma page html, meme pas l'entete http pour me dire qu'il se passe quelque chose.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 recv(...)
En clair, je ne sais pas si je suis bien connecté au serveur, apparemment oui, alors pourquoi m'avoir renvoyé un "connection : close", (le serveur ne fait pas ce qu'il dit ?), puis le send() réussi, cela signifie que je suis bien connecté et pourquoi alors je ne recoit aucune donnée alors que j'ai bien recu la première page html demandé.
Bref je suis en pleine galère.
Pour info, je suis sous windows,
j'ai utilisé :
Pour créer la socket que j'utilise pour télécharger toutes les pages (enfin une seule pour le moment vu mon erreur).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 sock = socket(AF_INET,SOCK_STREAM,0);
Une idée ?
Merci
Partager