0
点赞
收藏
分享

微信扫一扫

libcurl入门之相关接口函数curl_easy_getinfo

沈芏 2022-01-31 阅读 97


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



举报

相关推荐

0 条评论