zoukankan      html  css  js  c++  java
  • CURL的使用

    CURL的使用
    
       libCURL是C语言写的URL下载库,它支持多种协议如FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, IMAP,
    
       它在多个平台上都能下载,比如Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, Linux, Dos, and more.
    
     
    
       它在Windows下以Com的方式使用.
    
    其使用所要调用的函数是:
    
    Curl_easy_init();
    
    Curl_easy_setopt();
    
    Curl_easy_perform();
    
    Curl_easy_getinfo();
    
    Curl_easy_cleanup();
    
     
    
     
    
    而其使用之前要做的工作是:
    
         ::CoInitialize(NULL);
    
    之后要做的工作是:
    
         ::CoUninitialize();
    
     
    
    而在下载时,会通过curl_easy_setopt()进行设置用户名,密码,远端下载路径,
    
    头回调函数,写回调函数,进度回调函数。开始执行函数。最后还能调用获取信息函数。
    
    而头回调函数,只是头调用一次,而写回调函数是要反复调用的,进度回调函数也是反复调用的,其是通过curl自身建立的线程调用的。
    
     
    
    CURL是开源的,可以查看其源代码,
    
    在easy.c中可以看其curl_easy_init()函数,
    
    函数为:
    
    CURL *curl_easy_init(void)
    
    {
    
      CURLcode res;
    
      struct SessionHandle *data;
    
     
    
     
    
      if(!initialized) {
    
        res = curl_global_init(CURL_GLOBAL_DEFAULT);
    
        if(res) {
    
         
    
          DEBUGF(fprintf(stderr, "Error: curl_global_init failed
    "));
    
          return NULL;
    
        }
    
      }
    
     
    
     
    
      res = Curl_open(&data);
    
      if(res != CURLE_OK) {
    
        DEBUGF(fprintf(stderr, "Error: Curl_open failed
    "));
    
        return NULL;
    
      }
    
     
    
      return data;
    
    }
    
     
    
    真正的函数全在里面。
    
    对于SessionHandle结构体可以看如下的定义:
    
    struct SessionHandle {
    
      struct Names dns;
    
      struct Curl_multi *multi;   
    
      struct Curl_one_easy *multi_pos;
    
      struct Curl_share *share;   
    
      struct SingleRequest req;   
    
      struct UserDefined set;     
    
      struct DynamicStatic change;
    
      struct CookieInfo *cookies; 
    
      struct Progress progress;   
    
     

  • 相关阅读:
    【转】正确设置php-fpm子进程用户,提高网站安全性防挂马
    Linux修改SSH端口,并禁止Root远程登陆
    [转]PHP5 session 详解
    【转】PHP调试开发工具你认识多少?
    [转]浅谈php web安全
    【笔记】InnoDB内存分配
    【转】推荐介绍几款小巧的Web Server程序
    【转】定时自动启动任务crontab命令用法
    Tornado笔记
    Python笔记:open函数和with临时运行环境(文件操作)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318502.html
Copyright © 2011-2022 走看看