Bonjour,
j'utilise cette fonction pour aspirer une page web :
Je l'utilise dans une boucle while,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 char *bor_aspire_page(int sock,char *page,char *url) { int pos; int k; char tmp[200]; char tpm[100]; char *buf; buf = malloc(sizeof(char) * MAX_MESS); sprintf(tmp,"GET /%s HTTP/1.1\r\nHost: %s\r\nAccept: */*\r\nConnection: Keep-Alive\r\n\r\n",page,tpm); if(send(sock,tmp,strlen(tmp),0) < 0) { perror("write"); return NULL; } pos=0; while(1) { k=recv(sock,buf+pos,MAX_MESS-pos-1,0); if(k <= 0) break; pos+=k; if(pos > MAX_MESS-1) break; } return buf; }
a la premiere itération la page est bel et bien téléchargé, avec comme réponse du serveur
A la deuxième itération, recv() renvoie 0.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 HTTP/1.1 200 OK Date: Sun, 15 Jun 2008 12:19:44 GMT Server: Apache/1.3.37 (Unix) Last-Modified: Sun, 15 Jun 2008 12:01:04 GMT Keep-Alive: timeout=15 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html
J'en ai déduis que j'avais été deconnecté du serveur, j'ai essayé d'utiliser les connections http persistantes, en utilisant le protocole http 1.1 puis modifier les headers (Connection: Keep-Alive), d'ailleur le serveur me renvoie bien ceci, mais rien n'y fait.
En plus de cela la premiere page qui est téléchargé l'est rapidement, mais la détection "de fin de téléchargement" prend un peu de temps, meme énormément de temps, alors qu'en utilisant http 1.0 ca va très vite.
Si quelqu'un pouvait m'éclairer
Merci
Partager