localhostのポート80でlistenするlinuxの下でCのソケットAPIを使用してシンプルなサーバを作成しました。今、私はFirefoxから送信するときに1つだけを受信している間、私は2つの要求を受信するプログラムにブラウザのGoogle Chromeから要求を送信する。サーバソケットはクロムから送信したときに2つのHTTPリクエストを受信し、firefoxから送信するときに受信します
は、私がブラウザで入力したURLは:http://localhost/xyz.html
OUTPUT私はChromeのURLを入力すると
[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#
私のコードは、read呼び出しで待機して任意のデータを送信しない第2のリクエストだから私はそれを '^ C'で終わらせなければなりません。
OUTPUT私は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#
問題のURLを入力します。どのように私は一度だけURLを入力すると2つの要求(1が空であることを)送るブラウザをクロムすることができます。上記のように、私は2つの要求を検出しました。私は、クロムからURLを送信する場合にnetstatを実行しようとしましたが、私は両方のリクエストがブラウザによってのみ送信されたことがわかりました。 firefoxからURLを送信すると、上記のように1つのリクエストしか受信されません。ここで
私はクロームからのリクエストを送信する際、事前に
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
感謝:)
tcpflowまたはtcpdumpを実行して、要求に実際に何かが送信されているかどうか確認しましたか?それは将来の要求のための接続を開くかもしれません。 (RomanKが述べたように)。 – Kylar
2年後、私はChrome 24で同じ質問を受けました。 – Eye