zoukankan      html  css  js  c++  java
  • curl c/c++ api接口使用例程 Mr_Von的专栏 博客频道 CSDN.NET

    curl c/c++ api接口使用例程 - Mr_Von的专栏 - 博客频道 - CSDN.NET

    curl c/c++ api接口使用例程


    2761人阅读
    评论(0)
    收藏
    举报

    先总结一下本站与curl相关的文章:

    linux下php扩展cURL的安装
    cURL 中文用户手册(一)
    cURL中文用户手册(二)
    curl中文用户手册(三)

    [转帖] php cURL函数扩展文档
    php cURL扩展使用的例子
    用curl下载大文件

     除以上这些curl也提供一套网络c/c++ api的使用接口,以下是一个源代码例程:

    来源:http://bbs.chinaunix.net/viewthread.php?tid=586014

    前两天看到有人求客户端socket 发HTTP包的代码,受flw版主启发找了一些perl的资料,不过对perl 还是不太熟悉。也没有深入的
    研究。无意中发现了libcurl.so 这个库。去google上搜索发现它是处理客户端发送HTTP请求的库 以及可以处理web服务器回送回来的
    包。研究了两天将研究的成果,共享出来给大家一起研究。

    参考:http://curl.haxx.se/  这是curl开发者的首页。

    利用libcurl.so库 我们能轻松的连接某个web站点。获得某个首页的html代码 或者是http 请求的头部。 还可以提交表单,
    此外它还支持ftp,https,

    /usr/include/curl/curl.h 中。

    1 CURLcode curl_global_init(long flags);

    描述:
    这个函数只能用一次。(其实在调用curl_global_cleanup 函数后仍然可再用)
    如果这个函数在curl_easy_init函数调用时还没调用,它讲由libcurl库自动完成。

    参数:flags

    CURL_GLOBAL_ALL    //初始化所有的可能的调用。
    CURL_GLOBAL_SSL    //初始化支持 安全套接字层。
    CURL_GLOBAL_WIN32  //初始化win32套接字库。
    CURL_GLOBAL_NOTHING     //没有额外的初始化。


    2 void curl_global_cleanup(void);

    描述:在结束libcurl使用的时候,用来对curl_global_init做的工作清理。类似于close的函数。

    3 char *curl_version( );

    描述: 打印当前libcurl库的版本。


    4 CURL *curl_easy_init( );

    描述:
    curl_easy_init用来初始化一个CURL的指针(有些像返回FILE类型的指针一样). 相应的在调用结束时要用curl_easy_cleanup函数清理.
    一般curl_easy_init意味着一个会话的开始. 它的返回值一般都用在easy系列的函数中.

    5  void curl_easy_cleanup(CURL *handle);

    描述:
    这个调用用来结束一个会话.与curl_easy_init配合着用. 

    参数:
    CURL类型的指针.

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

    描述: 这个函数最重要了.几乎所有的curl 程序都要频繁的使用它.
    它告诉curl库.程序将有如何的行为. 比如要查看一个网页的html代码等.
    (这个函数有些像ioctl函数)

    参数:
    1 CURL类型的指针
    2 各种CURLoption类型的选项.(都在curl.h库里有定义,man 也可以查看到)
    3 parameter 这个参数 既可以是个函数的指针,也可以是某个对象的指针,也可以是个long型的变量.它用什么这取决于第二个参数.

    CURLoption 这个参数的取值很多.具体的可以查看man手册.

    7 CURLcode curl_easy_perform(CURL *handle);

    描述:这个函数在初始化CURL类型的指针 以及curl_easy_setopt完成后调用. 就像字面的意思所说perform就像是个舞台.让我们设置的
    option 运作起来.

    参数:
    CURL类型的指针.

     下面来看一个简单的例子:
    用来获得某个主页的html代码

    #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;
    
    }



    编译: gcc -o 001 -Wall 001.c -lcurl

  • 相关阅读:
    python3 TypeError: a bytes-like object is required, not 'str'
    Centos 安装Python Scrapy PhantomJS
    Linux alias
    Vim vimrc配置
    Windows下 Python Selenium PhantomJS 抓取网页并截图
    Linux sort
    Linux RSync 搭建
    SSH隧道 访问内网机
    笔记《鸟哥的Linux私房菜》7 Linux档案与目录管理
    Tornado 错误 "Global name 'memoryview' is not defined"
  • 原文地址:https://www.cnblogs.com/lexus/p/2437447.html
Copyright © 2011-2022 走看看