`
xombat
  • 浏览: 163659 次
  • 性别: Icon_minigender_1
  • 来自: 乌托邦
社区版块
存档分类
最新评论

libcurl库中curl_getinfo()返回值详解

阅读更多
array
  'url' => 'http://tc-apptest-zhangmen01.tc.google.com:2580/index.php?sex=male' (length=65)
  'content_type' => 'text/html' (length=9)
  'http_code' => 302
  'header_size' => 169
  'request_size' => 256
  'filetime' => -1
  'ssl_verify_result' => 0
  'redirect_count' => 0
  'total_time' => 0.005
  'namelookup_time' => 0.001
  'connect_time' => 0.003
  'pretransfer_time' => 0.003
  'size_upload' => 0
  'size_download' => 211
  'speed_download' => 42200
  'speed_upload' => 0
  'download_content_length' => 211
  'upload_content_length' => 0
  'starttransfer_time' => 0.005
  'redirect_time' => 0





以上是我程序中一条curl_getinfo()语句得出来的信息:

下面分析各个元素表示的信息:
url是这次curl连接的地址,http_code是302,表示这个url地址表示的文件中存在重定向,而redirect_count=0和redirect_time=0表示这次curl连接没有跟踪重定向,这是curl默认的参数设置,如果设置一下:
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

那么curl_getinfo()的信息就会变成这样:

array
  'url' => 'http://tc-apptest-zhangmen01.tc.google.com:2580/phpinfo.php' (length=58)
  'content_type' => 'text/html' (length=9)
  'http_code' => 200
  'header_size' => 319
  'request_size' => 458
  'filetime' => -1
  'ssl_verify_result' => 0
  'redirect_count' => 1
  'total_time' => 0.018
  'namelookup_time' => 0
  'connect_time' => 0
  'pretransfer_time' => 0
  'size_upload' => 0
  'size_download' => 39333
  'speed_download' => 2185166
  'speed_upload' => 0
  'download_content_length' => 211
  'upload_content_length' => 0
  'starttransfer_time' => 0.002
  'redirect_time' => 0.008


上面的url是从上一个url重定向到的新的url,这个url没有在重定向,因此它的http_code是200,而redirect_count和redirect_time都不再是0.

另外connect_time是建立连接的时间,在我测试了好几次之后发现connect_time总是等于pretransfer_time(这个时间是从一开始到开始传输数据的时间),但是不能就这么判定两者永远相等。那么两者时间会差在哪里呢?因为建立连接后就开始传输数据,因此我估计两者在截至的时间上相同,如果不同的话,估计是在计算时间的开始点上。pretransfer_time是从开始到传输数据,起点是在最开始,而connect_time的定义是连接花费时间,起点是开始连接。想了很长时间也是不明白,请求明白人指点。

nameloopup time是从开始到名字解析花费的时间。

size_upload为什么总是0呢?即使我使用了POST方法传输了数据也还是0,什么情况下才不是0呢?

size_download是页面的content-lenght值,而speed_download是size_download/total_time的出来的。

分享到:
评论

相关推荐

    libcurl.rar_libcurl_libcurl http_libcurl http_libcurl库

    **libcurl库详解** libcurl是一个强大的开源库,主要用于处理各种网络协议,特别是HTTP协议。它的强大在于它支持多种协议,包括HTTP、HTTPS、FTP、FTPS、TFTP、Gopher、SMTP、POP3、IMAP4等,使得开发者可以在同一...

    libcurl使用easy模式阻塞卡死等问题的完美解决

    curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &fileLength); } else { fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); } curl_easy_cleanup(curl); } ...

    IOS cocos2dx编译的curl报错‘__curl_rule_01__'

    ios编译COCOS2DX时,有些版本会出现以下错误,'__curl_rule_01__' declared as an array with a negative size 只需把所有的.h文件替换掉引擎的,再把libcurl.a添加到工程中,即可解决这问题

    C++#libcurl库#http数据传输#代码实例.zip_C++_c++ libcurl_libcurl_libcurl h

    安装libcurl库后,需要将其包含到你的C++项目中,通常通过添加头文件`#include <curl/curl.h>`来实现。 在C++中使用libcurl进行HTTP GET请求的基本步骤如下: 1. 初始化libcurl全局状态:调用`curl_global_init...

    libcurl_x64_编译好的,可直接使用

    **libcurl_x64 编译详解** libcurl 是一个著名的开源库,用于在各种编程语言中处理网络传输,特别是HTTP、HTTPS等协议。它支持多种传输协议,如FTP、FTPS、SMTP、POP3、TFTP等,使得开发者能够方便地实现文件上传...

    libcurl_imp_lib

    libcurl_imp.lib 是libcurl库的静态链接库版本,它包含了所有libcurl的函数和数据结构,用于在C或C++项目中直接链接和使用。通过引入这个库,开发者可以轻松地在他们的代码中添加网络通信功能,比如上传和下载文件、...

    ftp.zip_ftp c_libcurl_libcurl ftp_libcurl下载文件_vs2010 cppclean

    - 链接库:确保项目链接了libcurl.lib或者libcurl_imp.lib,具体取决于你选择的动态链接还是静态链接。 3. **FTP下载文件**: - 使用`CURLOPT_WRITEFUNCTION`回调函数,定义数据接收的处理方式。 - 设置`CURLOPT...

    libcurl_vs2015_staticlib.zip

    这个压缩包 "libcurl_vs2015_staticlib.zip" 包含了针对Visual Studio 2015编译的libcurl静态库,非常适合在Windows环境下进行32位(win32)网络编程。 1. **libcurl库介绍**:libcurl是一个功能强大的客户端URL...

    ESP32_curl_example-master.zip_ESP32 CURL_curl esp32_esp32 cmake_

    在ESP32_curl_example-master.zip文件中,我们预计会找到以下内容: 1. `CMakeLists.txt`:这是CMake构建系统的配置文件,用于编译libcurl及其示例代码。CMake是一个跨平台的自动化构建系统,能帮助管理和构建不同...

    libcurl静态库

    **libcurl静态库详解** libcurl是一个开源的C库,它提供了一组API,用于在各种协议下进行文件传输,包括HTTP、HTTPS、FTP、FTPS等。这个库被广泛应用于许多应用程序中,用于实现网络数据交换功能。本文将深入探讨...

    curl_自定义进度条

    `CURLOPT_PROGRESSFUNCTION`是libcurl库(`curl`的底层库)提供的一种回调机制,允许我们在数据传输过程中执行自定义操作,比如显示进度条。这个回调函数会在libcurl检测到下载或上传进度变化时被调用,我们可以根据...

    libcurltest.rar_libcurl_libcurl 上传_libcurl 下载_libcurl下载_使用libcur

    本资源“libcurltest.rar”包含了一个使用libcurl库实现上传和下载功能的源码示例,特别支持断点续传,这对于大文件操作尤其有用。 libcurl 库的核心功能: 1. **多种协议支持**:libcurl 支持多种网络传输协议,...

    curl_multi.rar

    在libcurl中,`curl_multi`接口是实现多线程并发的关键。通过创建一个`curl_multi`句柄,我们可以同时处理多个单独的`curl_easy`句柄,每个句柄对应一个HTTP请求。这种并发处理机制允许我们在不同的线程中运行这些...

    C++使用libcurl提供的API上传文件且Post表单数据

    在C++编程中,使用libcurl库可以方便地实现HTTP通信,包括文件上传和POST表单数据。libcurl是一个开源的库,它提供了多种语言的接口,包括C++,用于处理各种网络协议,如HTTP、FTP等。在这个场景中,我们将深入探讨...

    libcurl库的安装和使用111

    使用 libcurl 库需要调用 curl_global_init() 函数来初始化库,然后调用 curl_easy_init() 函数来获取 easy interface 型指针。接着,可以使用 curl_easy_setopt() 函数来设置传输选项,然后调用 curl_easy_perform...

    vc6.0 libCurl 简单使用

    在这个案例中,已经提供了一个个人编译的libcurl静态库,包括`libcurld.lib`和`libcurl.lib`两个文件,它们分别对应Debug和Release模式。在VC6.0项目中,我们需要将这些库文件添加到链接器的输入目录中,以确保编译...

    libcurl_lib_7.52.zip

    **libcurl库详解** libcurl是一个著名的开源库,用于在各种编程语言中处理网络协议,如HTTP、HTTPS、FTP、FTPS等。标题中的"libcurl_lib_7.52.zip"表明这是一个包含libcurl库的7.52版本的压缩文件,特别地,它已...

    windows平台curl 64位静态库和动态库

    压缩包内包含两个文件夹curl_静态库和curl_动态库,内容说明如下: curl_静态库下面: bin子目录包含curl.exe及动态库libcurl.dll include子目录包含头文件 lib子目录包含动态库的...lib子目录包含静态库libcurl_a.lib

    libcurl库测试样例

    在C++编程中,libcurl库通常通过包含`curl/curl.h`头文件来使用。在VS2013中,你需要确保已经正确安装了libcurl的开发库,并将其路径添加到项目设置的包含目录和库目录中。同时,也要将libcurl的库文件(例如`...

    Curl获取网络时间.zip_Curl获取网络时间_curl 时间_curl 网络时间_网络时间 curl_网络时间获取

    本教程将详细讲解如何使用Curl库在C++中获取网络时间。 首先,你需要在你的项目中包含Curl库。你可以从Curl的官方网站下载源代码并编译,然后将其库文件添加到你的项目路径中。在Windows上,这可能涉及设置包含目录...

Global site tag (gtag.js) - Google Analytics