libcurl入门之相关接口函数curl_easy_getinfo

名称 curl_easy_getinfo

原型

#include <curl/curl.h>
CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ... );

描述

使用这个函数从curl会话请求内部信息。第三个参数必须是一个long变量,一个指向char *的指针,一个指向struct curl_slist *指针或者一个指向double的指针(就像本文档下面将要描述的那样)。当这个函数返回CURL_OK时,这个被指向的数据会被相应的填充。

不用对这个函数返回的内存进行释放(free),除非在下面被特殊的强调。

有效的INFO

下面的信息可以被截取(有很多,可以去英文网站去看,有对应的示例代码):

CURLINFO_HTTP_VERSION 获取在连接时候使用的http版本。

CURL *curl = curl_easy_init();
if(curl) {
  CURLcode res;
  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
  res = curl_easy_perform(curl);
  if(res == CURLE_OK) {
    long http_version;
    curl_easy_getinfo(curl, CURLINFO_HTTP_VERSION, &http_version);
  }
  curl_easy_cleanup(curl);
}

CURLINFO_TOTAL_TIME 获取前一个传输的执行总时间

curl = curl_easy_init();
if(curl) {
  double total;
  curl_easy_setopt(curl, CURLOPT_URL, url);
  res = curl_easy_perform(curl);
  if(CURLE_OK == res) {
    res = curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &total);
    if(CURLE_OK == res) {
      printf("Time: %.1f", total);
    }
  }
  /* always cleanup */
  curl_easy_cleanup(curl);
}

CURLINFO_CONNECT_TIME 获取connet从开始到完成的时间

curl = curl_easy_init();
if(curl) {
  double connect;
  curl_easy_setopt(curl, CURLOPT_URL, url);
  res = curl_easy_perform(curl);
  if(CURLE_OK == res) {
    res = curl_easy_getinfo(curl, CURLINFO_CONNECT_TIME, &connect);
    if(CURLE_OK == res) {
      printf("Time: %.1f", connect);
    }
  }
  /* always cleanup */
  curl_easy_cleanup(curl);
}

CURLINFO_SPEED_UPLOAD_T 获取上传速度,单位bytes/second

CURL *curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
 
  /* Perform the request */
  res = curl_easy_perform(curl);
 
  if(!res) {
    curl_off_t speed;
    res = curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD_T, &speed);
    if(!res) {
      printf("Upload speed %" CURL_FORMAT_CURL_OFF_T " bytes/sec\n", speed);
    }
  }
}

关于时间

可以从curl_easy_getinfo()获取下面看到的6个时间值

curl_easy_perform()
    |
    |--NAMELOOKUP
    |--|--CONNECT
    |--|--|--APPCONNECT
    |--|--|--|--PRETRANSFER
    |--|--|--|--|--STARTTRANSFER
    |--|--|--|--|--|--TOTAL
    |--|--|--|--|--|--REDIRECT

返回值

如果操作成功,返回CURLE_OK

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值