名称 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

libcurl入门之相关接口函数curl_easy_getinfo相关推荐

  1. libcurl入门之相关接口函数curl_easy_setopt

    名称 curl_easy_setopt 原型 #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLopti ...

  2. libcurl入门之相关接口函数curl_easy_cleanup

    名称 curl_easy_cleanup 原型 #include <curl/curl.h> void curl_easy_cleanup(CURL *handle); 描述 这个函数必须 ...

  3. libcurl入门之相关接口函数curl_global_init/cleanup

    名称:curl_global_init 原型 #include <curl/curl.h> CURLcode curl_global_init(long flags); 描述 这个函数设置 ...

  4. 线程及其相关接口函数(Linux)

    目录 一.线程 1.线程相关接口函数 (1)创建线程 pthread_create() (2)结束线程 pthread_exit() (3)等待进程 pthread_join() 2.线程间通信 (1 ...

  5. System V 消息队列(一)—— 消息队列相关接口函数(msgget / msgctl)

    SystemV方案是在OS内核层面专门为进程间通信设计的一个方案,然后通过系统调用(system call)给用户提供通信接口.SystemV方案包含三种:共享内存.消息队列.信号量. 和System ...

  6. C++ 接口 函数导出_Matlab与C/C++混合编程、Visual C++与Matlab封装库互相调用相关要点...

    [版本说明] Visual Studio 2010 Matlab2014a 64bit Windows7 64bit 以下是我安装的 Matlab2014a 支持的 C++混合编译器的SDK版本(为了 ...

  7. linux路由相关函数,Linux 路由 学习笔记 之十一 输入、输出路由查找相关的接口函数...

    对于路由功能模块的学习,也已经很长时间了.关于路由项的创建与查找.策略规则相关的创建与查找.路由缓存的创建与查找,都是分开来分析的,没有说明这些模块是如何配合使用的,以及模块之间的联系.本节就分析一下 ...

  8. WinCE中串口驱动及接口函数介绍(转载)

    作者:ARM-WinCE 在WinCE中,串口驱动实际上就是一个流设备驱动,具体架构如图: 串口驱动本身分为MDD层和PDD层.MDD层对上层的Device Manager提供了标准的流设备驱动接口( ...

  9. java hook 框架_hook框架-frida简单使用模板以及frida相关接口

    一目录结构 ├── test.py #py脚本 └── test.js #js脚本 一.py脚本 test.py import frida import sys #连接设备app dev=frida. ...

  10. 【转载】WinCE中串口驱动及接口函数介绍

    转载自:http://blog.csdn.net/nanjianhui/article/details/2627755 在WinCE中,串口驱动实际上就是一个流设备驱动,具体架构如图: 串口驱动本身分 ...

最新文章

  1. c语言程序设教材计 乌云高娃,C语言程序设计教学课件作者第3版乌云高娃演示文稿C语言程序设计教学课件作者第3版乌云高娃演示文稿演示文稿第1章C语言程序设计基础课件.ppt...
  2. kali python3安装scapy库_Kali-Python scapy模块-扫描
  3. collections模块简介
  4. HDU-1258 Sum It Up DFS
  5. MyBatisPlus查询方法selectById、selectOne、selectBatchIds、selectByMap、selectPage的使用
  6. SGU 294 He's Circles (polay计数)
  7. 3-2 文件夹类Directory的常用方法(2)
  8. 自动修改mysql5.7初始化密码
  9. vs201检查更新不成功_Kubernetes玩转Pod滚动更新123
  10. 那一年,创业 vs 阿里(下):阿里篇
  11. 计算机网络—五层知识架构图
  12. wifi mesh测试软件,「可能是」最适合我的Mesh+WiFi6方案:Linksys Velop MX10600体验分享...
  13. 调查称82%网友面对安全问题无从下手
  14. 如何解决Unity高版本使用EasyTouch5的问题
  15. 人脸识别+AI技术如何实现智慧工地履约考勤?
  16. 计算机制造商logo,如何更改系统oem制造商logo等信息
  17. 【django】class='btn' btn按钮样式
  18. linux curse库函数,curse
  19. matlab 二维空间变换-maketform imtransform 用法
  20. [RTOS]rtthread,freeRTOS,uCOS等系统简单对比

热门文章

  1. 深度解析,抖音对口型唱歌类短视频内容制作流程,步骤技巧分享
  2. mysql备份数据库/备份表
  3. Android O 修改吉字节为GB
  4. B. Shashlik Cooking
  5. linux用户起名,如何在Linux中重命名用户(也可以重命名组和主目录)
  6. 阿里云服务器价格表(最新海外地域价格表)
  7. 2020电信宽带费用_现在电信宽带多少钱一年,2020年电信宽带套餐价格表
  8. 一招教你表格里面给方框内打勾
  9. 顶级域名(一级域名)、二级域名、三级域名的区别与介绍
  10. 我的CSDN博客十年