Problem z pobieraniem nagłówka HTTP

0

Witam,
Zadaniem mojego kodu jest pobieranie nagłówka HTTP wysłanego przez przeglądarkę:

dl_odebrane=recv(klient_sockfd, &znak, 1, 0);
while(dl_odebrane>0){
     printf("%c", znak);
     memset(&znak, '\0', 1);
     dl_odebrane=recv(klient_sockfd, &znak, 1, 0);
}
 

wszystko pobiera się OK, oprócz danych przesłanych POST:

[root@loganek emsiserv_emsiserv1]# ./a.out 
POST /tmp.html HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:2.0) Gecko/20100101 Firefox/4.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pl,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 10

Co ciekawe, kiedy wyślę drugie zapytanie, dane POST z poprzedniego zapytania są wyswietlane(oczywiście z aktualnego już nie:)):

[root@loganek emsiserv_emsiserv1]# ./a.out 
POST /tmp.html HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:2.0) Gecko/20100101 Firefox/4.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pl,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 10

sdf=asdsad
POST /tmp.html HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:2.0) Gecko/20100101 Firefox/4.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pl,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 10



Ktoś wie, dla czego dane POST wyświetlane są dopiero w następnym odbieraniu danych, a nie w aktualnym?
Z góry dziękuję za pomoc

0

gdy użyłem dużego bufora odbioru tj. 4 KiB i odebrałem na chama na raz to odebrało wszystko.

0

być może twoja przeglądarka wysyła dane w dwóch "paczkach" tj. nagłówki i reszta, przez co jądro po nagłówkach sygnalizuje koniec danych w związku z opóźnieniem powodowanym drugą "paczką"?

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