libcurl使用介绍

2018-07-24  本文已影响290人  smallest_one

目录

  1. 参考
  2. curl介绍
  3. libcurl-easy的API介绍
  4. 注意事项

1. 参考

2. curl介绍

curl是用C语言写的,提供使用URL进行文件传输的功能。目前已经支持非常多的流行的互联网协议,如:FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS 和 FILE等。curl支持SSL认证,HTTP POST/PUT,FTP上传,HTTP上传、代理、cookies、用户+密码认证、文件续传、代理管道等一系列强大的功能。

curl可以分成命令行工具和libcurl两个部分,命令行工具可以直接输入指令完成相应功能,libcurl则是一个URL传输库,线程安全且兼容IPv6,并且使用方便。

libcurl支持3种不同的模式,分别是"easy"、"multi"和"share"模式。

  1. libcurl-easy是一组同步接口,函数都是curl_easy_*形式,这种模式调用curl_easy_perform()函数进行URL数据传输,直到传输完成函数才返回。
  2. libcurl-multi是一组异步接口,函数都是curl_multi_*形式,调用curl_multi_perform()函数进行传输,但是每次调用只传一片数据,我们可以用select()函数控制多个下载任务进行同步下载,来实现在一个线程中同时下载多个文件。
  3. libcurl-share允许在多线程中操作共享数据。

下面主要讲libcurl-easy的使用方式。

3. libcurl-easy的API介绍

分以下两部分进行介绍:

  1. 基础使用流程
  2. 其他常用功能

3.1 基础使用流程

基础的一些方法如下:

curl_global_init()
curl_easy_init()
curl_easy_reset(CURL * handle)
curl_easy_setopt(CURL * handle, CURLOPT_URL,)
curl_easy_setopt(CURL *handle, CURLOPT_WRITEFUNCTION, write_callback)
curl_easy_setopt(CURL *handle, CURLOPT_WRITEDATA, void *pointer)
curl_easy_setopt(CURL * handle, CURLOPT_POSTFIELDS,)
curl_easy_setopt(CURL *handle, CURLOPT_HTTPHEADER, struct curl_slist *headers)
curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT, timeout_seconds)
curl_easy_setopt(CURL *handle,   CURLOPT_USERAGENT, "libcurl-agent/1.0")
curl_easy_perform(CURL * handle)
curl_easy_cleanup(CURL * handle)
curl_global_cleanup()
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEDATA, void *pointer);
size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata);
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEFUNCTION, write_callback)

3.2 其他常用功能

size_t header_callback(char *buffer, size_t size, size_t nitems, void *userdata);
//其中,ptr指向接收到的header头数据,数据大小为size*nmemb,
//stream指向调用CURLOPT_WRITEHEADER选项设置的参数。
//该回调函数应返回实际处理的数据量大小,或者出错返回-1。
int progress_callback(void *clientp,   double dltotal,   double dlnow,   double ultotal,   double ulnow);
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROGRESSDATA, void *pointer);

4. 注意事项

上一篇 下一篇

猜你喜欢

热点阅读