wangchenxicool

博客园 首页 联系 管理
 
#include <stdio.h>;
#include
<curl/curl.h>;
#include
<stdlib.h>;

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


CURLcode res;
//定义CURLcode类型的变量



if(argc!=2)
{
printf(
"Usage : file <url>;\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
posted on 2011-08-30 23:13  wangchenxicool  阅读(431)  评论(0)    收藏  举报