私はCで単純なhttpページリクエスタを作っています。ソケットを使ってホストにHTTP/1.0 GETリクエストを送り、その答えを解析してhtmlファイルを効果的にダウンロードします。私はこのような要求を送信するとき しかし、:私のHTTP/1.0 GET要求はOKですが、本体コンテンツは返されません。
GET http://stackoverflow.com/questions HTTP/1.0
User-Agent: myRequester/1.0
それはこの
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Date: Mon, 19 Dec 2011 15:28:08 GMT
Content-Length: 54362
Connection: close
しかし、無本文の内容を返します。
はい、すべての行の末尾にはCRLFを、最後には空白行を追加しました。 1つの接続で1つのソケットのみを使用します。そして、私はHTTP/1.0に固執する必要があります。
実際に完全な応答をお待ちしていますか?これらのヘッダーは、サーバーが本文を送信していることを示します。 – ibid
はい、確信しています。私は、recv()の戻り値で答えの長さをチェックし、その後もstrlen()でバッファを編集しました。 – alexdantas
しかし、最後まで読んでいますか? recvは必ず1回の呼び出しで完全な応答を読み取るわけではありません。 recvが接続が終了したことを報告するまで呼び出しを繰り返す必要があります。 – ibid