掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
HTTPでファイルを取得するには? (ID:51325)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
RFCを読みました。 ヘッダ部分はCRLFが2回続くところ(つまり、空行)で終わるようですね。 そこで、CRLFが2回つづくところで切ってそこからデータを書き込むように しました。 しかし、作成したプログラムでダウンロードしたデータと、インターネット エクスプローラでダウンロードしたデータで違いが見られます。 今回は、GIFファイルをダウンロードしたのですが、ダウンロードした結果 のファイルの容量とインターネットエクスプローラでダウンロードした結果 のファイルの容量が異なります。 以下は、そのファイルを書き込む部分です。 SOCKET client; /* クライアントソケット */ int res; /* 関数の返し値 */ char buffer[4000]; /* 読み出し用バッファ */ FILE * fpgetfile; /* 受信データを格納するファイル */ int ifilejudge; /* ファイルヘッダか判定 */ unsigned int iloopcount; /*************************途中省略************************/ /* データの入力 */ for(/* */;;){ res = recv(client, buffer, sizeof(buffer), 0); if(res == SOCKET_ERROR) error("Data Reading."); if(res == 0) break; if(ifilejudge == 1) { for(iloopcount = 0; iloopcount < strlen(buffer); iloopcount++) { if(buffer[iloopcount] == 13 && buffer[iloopcount + 1] == 10 && buffer[iloopcount + 2] == 13 && buffer[iloopcount + 3] == 10) { fwrite(&buffer[iloopcount + 4], res, 1, fpgetfile); } } /* ファイルヘッダ判定フラグを0にする */ ifilejudge = 0; } else { fwrite(buffer, res, 1, fpgetfile); } }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.