Protokół HTTP, Podtrzymanie połączenia z serverem - nagłówki

0

Witam! Potrzebuje 2 funkcji z protokołu HTTP - pobrania kodu strony i logowania na stronę(co już udało mi się wykrzesać). Problem polega na tym, że po 1 wysłanym żądaniu(lub paru sekundach zwłoki) server zrywa ze mną połączenie.

Temat kręci się przy nagłówku connection
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.10

Jednak jakoś średnio rozumiem ten opis, tym bardziej że tam opisują token "close", a przy sniffowaniu mojego chroma zobaczylem ze wysyła token keep-alive... próbowałem nawet zrobić wątek który co 1s wysyła same
"connection: keep-alive\r\n"/"connection: close\r\n", ale nic z tego nie wyszło ;/

oto moja funkcja do wysłania żądania kodu strony:

void GetURL(char url[])
{
CClient* client=CClient::Get();

client->SendData("GET / HTTP/1.1\r\n", strlen("GET / HTTP/1.1\r\n"));

char host[100];
sprintf(host, "Host: %s\r\n", url);
client->SendData(host, strlen(host));

client->SendData("Connection: keep-alive\r\n", strlen("Connection: keep-alive\r\n"));

//client->SendData("Connection: close\r\n", strlen("Connection: close\r\n"));

client->SendData("User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7\r\n",\
	strlen("User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7\r\n"));

client->SendData("Accept: */*\r\n", strlen("Accept: */*\r\n"));
client->SendData("\r\n", strlen("\r\n"));

}

Prosze o rady... pozdro :)

0

Problem polega na tym, że po 1 wysłanym żądaniu(lub paru sekundach zwłoki) server zrywa ze mną połączenie.

Widocznie, pomimo żądania potrzymania połączenia, serwer ma ustawiony jakiś timeout, i po paru sekundach braku aktywności zamyka połączenie. Nic nie zrobisz.

0

Wydaje mi się to niemożliwe... próbowałem na o2, 4programmers też mnie rozłącza ;/. Musi być jakiś sposób żeby podtrzymać połączenie, tylko pytanie jaki?

0

Tu masz coś na temat timeoutów przy tego typu połączeniach (rfc2616):

Servers will usually have some time-out value beyond which they will no longer maintain an inactive connection. Proxy servers might make this a higher value since it is likely that the client will be making more connections through the same server. The use of persistent connections places no requirements on the length (or existence) of this time-out for either the client or the server.

0

Poddaje się, zmarnowałem mase czasu i ciągle mnie wywala. Dzięki za pomoc!

1 użytkowników online, w tym zalogowanych: 0, gości: 1