curl c api
curl c api
关于Curl的介绍很多,这里不详细介绍,主要谈一下简单应用。
最近研究了一下Linux下的curl C API,curl c API的文档比较丰富,唯一就是查找起来,费些时间。Curl的C API和curl的PHP API,函数接口和作用大致相同,所以如果有PHP API使用经验应该很好理解。
1:CURLcode curl_global_init(long flags);函数,这个函数全局需要调用一次(多次调用也可以,不过没有必要), 所以这也是把Curlplus设计成单体类的原因,curl_global_init函数在其他libcurl函数调用前至少调用一次,程序最后需要调用curl_global_cleanup,进行清理。
参数:flags
CURL_GLOBAL_ALL Initialize everything possible. This sets all known bits.
CURL_GLOBAL_SSL Initialize SSL
CURL_GLOBAL_WIN32 Initialize the Win32 socket libraries.
CURL_GLOBAL_NOTHING Initialise nothing extra. This sets no bit.
CURLcode 是一个enum,当CURLcode为CURLE_OK时,表示函数执行成功,否则失败,具体错误原因可以查看<curl/curl.h>文件内的定义。
2: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指针。
3: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_WRITEFUNCTION,CURLOPT_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的指针。
在上面的例子中,b
相关文档:
第一章
1.
解释性语言:shell javascript python 编程人员不需要经过编译 连接的过程,可以在特定环境下直接执行的语言 自动编译连接。开发效率高,但运行效率低。
编译型语言:java c c++,需要经过编程人员经过编译和连接产生可执行程序的语言。运行效率高。
2.
数据
数据结构:数据之间的 ......
Part I 如何上路
1. vi, vim是编译器么?
vi means visual editor,是软件世界第一个全屏幕编辑器,最初的作者是现在Sun microsystem的Bill Joy。
vim means Vi IMproved,可以看作是增强的vi。
很不幸,他们都不是编译器,如果你已经写好了first.c,那么不能指望vi们将你的源代码变成执行程序。
2. gcc, ......
以下文章转载于:为了学习和收藏
http://tech.163.com/school · 2005-08-23 11:05:18 · 来源: 天极网
C/C++数组名与指针区别
引言
指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们 ......
我在写代码的时候喜欢使用宏,不仅使代码看起来整洁,而且用好了还能极大的减轻编码的工作量,但是如果使用不当的话,出了问题查找起来就就非常的难了,下面的总结大部分是从网上看到的,也有一些是我自己在工作中总结出来的。
宏使用中的常见的基础问题
1. 防止一个头文件被重复包含
#ifndef BOD ......
一 :解决C或C++中的multiple definition of问题
server.cpp
clientp2p.cpp
#include "exception.h"
#include "clientp2p.h"
clientp2p.h
中写有所有的全局变量及其初始化值
和函数声明
1.server.cpp中:
引用
:
#include "clientp2p.h"
int Main(....)
{
...
}
2.clientp ......