从curl_easy_perform管道数据

时间:2014-11-13 23:05:47

标签: c curl pipe libcurl

我正在尝试使用libcurl将来自任意(用户指定的)网址的数据传输到我的应用程序:

  • https.c示例显示了如何从URL中检索内容并立即将其写入某处,例如stdout或文件。
  • sendrecv.c示例显示了如何通过使应用程序重复调用curl_easy_recv来检索数据块来设置管道。

但是我不明白如何将两者结合起来。似乎curl_easy_recv仅在以下情况下有效:

/* Do not do the transfer - only connect to host */ 
curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 1L);

设置此选项时curl_easy_perform不检索任何数据,它只是连接。在该示例中,应用程序通过使用curl_easy_send手动发送http命令来继续。但是,我只想检索URL中指定的数据,而无需编写手动的http或ftp命令。

有没有办法将curl_easy_recv或类似内容与curl_easy_perform的默认行为结合使用,自动检索网址中指定的内容?

1 个答案:

答案 0 :(得分:0)

首先,如果您没有执行libcurl已经支持的协议之一,curl_easy_sendcurl_easy_recv实际上只是意味着使用,因此在大多数情况下它们不是正确的答案。这听起来并不像你需要它们。

curl_easy_perform()会传输给定的网址,并在数据到达后立即调用CURLOPT_WRITEFUNCTION,然后您可以使用该数据或将其发送到您选择的地方。这还不够吗?