【发布时间】:2012-04-07 08:24:35
【问题描述】:
我有一个简单的问题。是否可以编写简单的代码来从互联网(从 URL 到磁盘)下载文件而不使用像 curl 这样的 C++(对于 mac osx)库? 我见过一些例子,但所有这些都使用 Curl 库。
我在我的 xcode projet 上使用此代码..但我有一些编译(链接)错误
#define CURL_STATICLIB
#include <stdio.h>
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
#include <string>
size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
size_t written;
written = fwrite(ptr, size, nmemb, stream);
return written;
}
int main(void) {
CURL *curl;
FILE *fp;
CURLcode res;
char *url = "http://localhost/aaa.txt";
char outfilename[FILENAME_MAX] = "bbb.txt";
curl = curl_easy_init();
if (curl) {
fp = fopen(outfilename,"wb");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
fclose(fp);
}
return 0;
}
如何将 curl 库链接到我的 xcode 项目?
【问题讨论】:
-
您可以提供不使用 curl 的原因,以便其他人可以向您展示针对您的特定问题的解决方法。
-
有可能,但并不简单。例如,您要么必须支持分块编码(这并不简单),要么不发出 HTTP 1.1 请求(这会使您无法进行互操作)。这是一个糟糕的权衡。你的外部问题是什么?
-
我需要一个简单的脚本来测试..我不会在我的 Mac 上安装这个库来进行这个简单的测试..
-
@GgSalent 所有 Mac 都预装了 cURL(和 libcurl)。你不需要安装任何东西。不要重新发明轮子;使用像 libcurl 这样的库。真的,libcurl 会比不使用自己编写的代码更快、更可靠。
-
我理解人们无法得到一个写得不好的复杂问题。我不明白什么时候一个简单、清晰的问题会被打扮得太多,以至于“避免”简单、简单、直接的答案。是否可以编写简单的代码来从互联网下载文件? 是的。是的答案,并给出了简单的例子,并不意味着 它总是像使用 cURL 一样工作。要处理所有情况,您必须基本上实现其他人已经很好实现的东西(例如 libcurl);这样做没有意义,这很明显,但对可能性保持好奇总是好的。