Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4263861
  • 博文数量: 776
  • 博客积分: 13014
  • 博客等级: 上将
  • 技术积分: 10391
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-22 17:00
文章分类

全部博文(776)

文章存档

2015年(55)

2014年(43)

2013年(147)

2012年(20)

2011年(82)

2010年(429)

分类: LINUX

2010-08-05 23:25:41

#include ;
#include ;
#include ;

int main(int argc, char *argv[])
{
    CURL *curl; //定义CURL类型的指针
    CURLcode res; //定义CURLcode类型的变量

    if(argc!=2)
    {
        printf("Usage : file ;\n");
        exit(1);
    }

    curl = curl_easy_init(); //初始化一个CURL类型的指针

    if(curl!=NULL)
    {
        //设置curl选项. 其中CURLOPT_URL是让用户指定url. argv[1]中存放的命令行传进来的网址

        curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
        //调用curl_easy_perform 执行我们的设置.并进行相关的操作. 在这里只在屏幕上显示出来.

        res = curl_easy_perform(curl);
        //清除curl操作.

        curl_easy_cleanup(curl);
    }
    return 0;
}

1. curl_easy_init - Start a libcurl easy session
curl_easy_init
用来初始化一个CURL的指针(有些像返回FILE类型的指针一样). 相应的在调用结束时要用curl_easy_cleanup函数清理. 一般curl_easy_init意味着一个会话的开始. 它的返回值是CURL *curl_easy_init函数是线程相关的,也就是说不能在一个线程中调用另外一个线程通过curl_easy_init创建的CURL指针。


2. CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);

描述: 这个函数最重要了.几乎所有的curl 程序都要频繁的使用它.它告诉curl.程序将有如何的行为. 比如要查看一个网页的html代码等.,要想具体了解CURL的行为,必须对CURLoption有足够的了解,具体可以参考

http://curl.haxx.se/libcurl/c/curl_easy_setopt.html

这里有两个类型不易理解CURLOPT_WRITEFUNCTIONCURLOPT_WRITEDATA

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, Curlplus::writer);

设置一个回调函数,这个回调函数的格式是

size_t function( void *ptr, size_t size, size_t nmemb, void *stream);

ptr,返回数据的指针

size,返回数据每块的大小

nmemb,返回数据的块数(这里返回数据串的真正大小为size*nmemb

stream,是curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer); 中的buffer的指针。

在上面的例子中,buffer设置为一个string对象,所以,在回调函数writer中有了writerData->append(data, len); 

3CURLcode curl_easy_perform(CURL *handle);

执行远程请求

参考资料
http://curl.haxx.se/
http://curl.haxx.se/lxr/source/docs/examples/

 原文地址 http://control.cublog.cn
阅读(1589) | 评论(0) | 转发(0) |
0

上一篇:libcurl使用心得

下一篇:libcurl教程

给主人留下些什么吧!~~