Bonjour,
j'utilise cette fonction pour aspirer une page web :

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;
}
Je l'utilise dans une boucle while,
a la premiere itération la page est bel et bien téléchargé, avec comme réponse du serveur

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
A la deuxième itération, recv() renvoie 0.

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