ファイルをダウンロードして保存するように、winsock2.hを使用してexeをダウンロードしてローカルに保存する小さなプログラムを作成しようとしています。ただし、最終ファイルは、実際にダウンロードするファイルの約 6 倍の大きさになります。理由が分からないようです。ダウンロードしてローカルに保存しようとしているファイルは ccleaner403.exe です。たとえば、約 4 MB ですが、最終結果は 36 MB です。明らかにそこにはまだ HTTP ヘッダーがありますが、それらは 32 MB ではありません。ファイルが少し長いので、「ファイル書き込み部分」を切り取っただけです。残りが必要な場合は、お尋ねください。
#define BUFSIZE 4096
// Receive the data
memset(buf, 0, sizeof(buf));
// Open file for writing
fp = fopen("stuff.exe", "wb");
header = 0;
test = 0;
while ((tmpres = recv(sock, buf, BUFSIZ, 0)) > 0)
{
fwrite(buf, 1, sizeof(buf), fp);
memset(buf, 0, tmpres);
}