Escribí un servidor simple usando socket API en C en Linux que escucha en el puerto 80 en localhost. Ahora cuando envío una solicitud desde el navegador google chrome al programa, recibe 2 solicitudes mientras recibe solo una cuando envío desde firefox.server socket recibe 2 solicitudes HTTP cuando envío desde chrome y recibe una cuando envío desde firefox
El URL que escribí en el navegador era: http://localhost/xyz.html
salida cuando me escribe la URL EN CHROME
[email protected]:/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
[email protected]:/home/anirudh/workspace/DCMTOL#
la segunda solicitud no envía ningún dato por lo que mi código de espera en la llamada de lectura y entonces tengo que terminarlo '^ C'.
salida cuando me escribe la URL en Firefox
[email protected]:/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
[email protected]:/home/anirudh/workspace/DCMTOL#
Pregunta: ¿Cómo puede cromo navegador envía peticiones 2 (uno de ellos vacío) cuando escribió la dirección URL sólo una vez. Como puede ver arriba, detecté 2 solicitudes. Intenté hacer netstat en el caso de enviar URL desde Chrome y encontré que ambas solicitudes fueron enviadas solo por el navegador. y como puede ver arriba cuando envío la URL de Firefox, solo se recibe una solicitud.
Aquí está la salida del stat neta cuando envío petición de cromo
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
gracias de antemano :)
¿Ha intentado ejecutar tcpflow o tcpdump para ver si realmente se envió algo en la solicitud? Podría estar abriendo una conexión para futuras solicitudes. (como RomanK mencionó). – Kylar
Después de dos años, tengo la misma pregunta con Chrome 24. – Eye