il socket del server riceve 2 richieste http quando invio da chrome e ne riceve uno quando invio da firefox

Ho scritto un semplice server usando socket API in C sotto linux che ascolta alla porta 80 su localhost. Ora quando invio una richiesta dal browser google chrome al programma riceve 2 richieste mentre ne riceve solo una quando invio da firefox.

L’URL che ho digitato nel browser era: http: //localhost/xyz.html

OUTPUT QUANDO I TYPE URL IN CHROME

root@anirudh-Aspire-5920:/home/anirudh/workspace/DCMTOL# ./DCMTOL_RUN Inside HTTP server Handler Inside HTTP request Handler **Detected request: clientsocket_fd = 6 clientportnumber = 38027** GET /xyz.html HTTP/1.1 Host: localhost Connection: keep-alive Cache-Control: max-age=0 Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10 Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.8 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 Inside HTTP request Handler **Detected request: clientsocket_fd = 7 clientportnumber = 38029** ^C root@anirudh-Aspire-5920:/home/anirudh/workspace/DCMTOL# 

la seconda richiesta non invia alcun dato quindi il mio codice attende la chiamata in lettura e quindi devo terminarlo ‘^ C’.

USCITA QUANDO TIPO URL IN FIREFOX

 root@anirudh-Aspire-5920:/home/anirudh/workspace/DCMTOL# ./DCMTOL_RUN Inside HTTP server Handler Inside HTTP request Handler **Detected request: clientsocket_fd = 6 clientportnumber = 45567** GET /xyz.html HTTP/1.1 Host: localhost User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.10 (maverick) Firefox/3.6.13 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive ^C root@anirudh-Aspire-5920:/home/anirudh/workspace/DCMTOL# 

Domanda: Come può il browser Chrome inviare 2 richieste (una vuota) quando ho digitato l’URL una sola volta. Come puoi vedere sopra ho rilevato 2 richieste. Ho provato a fare netstat nel caso di invio di URL da Chrome e ho riscontrato che entrambe le richieste erano state inviate solo dal browser. e come puoi vedere sopra quando invio l’URL da Firefox solo 1 richiesta viene ricevuta.

Ecco l’output di net stat quando invio la richiesta da chrome

 Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 117.195.110.186:48701 74.125.77.102:80 TIME_WAIT - tcp 0 0 117.195.110.186:48700 74.125.77.102:80 ESTABLISHED 5699/google-chrome tcp 0 0 117.195.110.186:55815 209.85.175.138:80 ESTABLISHED 5699/google-chrome tcp 0 0 127.0.0.1:80 127.0.0.1:38029 ESTABLISHED - tcp 0 0 127.0.0.1:38029 127.0.0.1:80 ESTABLISHED 5699/google-chrome tcp 0 0 127.0.0.1:38027 127.0.0.1:80 ESTABLISHED 5699/google-chrome tcp 0 0 127.0.0.1:80 127.0.0.1:38027 ESTABLISHED - tcp 0 0 117.195.110.186:35402 74.125.153.125:5222 ESTABLISHED 4430/pidgin 

Grazie in anticipo 🙂