libcurl消息和执行过程的含义

时间:2013-10-01 06:49:42

标签: c linux curl libcurl

我正在使用libcurl库从服务器获取abc-1.tar文件。我想知道显示此消息的libcurl的显示和执行过程的消息的含义。

例如:我提供了以下一些消息,我知道基本消息含义如Content-Length表示下载的文件长度等。

我想要所有消息的含义,特别是以*开头的消息(例如Connection #0 to host (nil) left intact

* Re-using existing connection! (#0) with host (nil)
* Connected to (nil) (182.72.67.14) port 65101 (#0)
GET /...... HTTP/1.1
Host: 182.72.67.14:65101
Accept: */*
Connection:keep-alive
< HTTP/1.1 200 OK
< Cache-Control: private
< Content-Length: 186368
< Content-Type: application/x-tar
< Server: Microsoft-IIS/7.5
< Content-Disposition: attachment; filename=abc-1.tar
< X-AspNet-Version: 4.0.30319
< X-Powered-By: ASP.NET
< Date: Tue, 01 Oct 2013 06:29:00 GMT
< 
* Connection #0 to host (nil) left intact

2 个答案:

答案 0 :(得分:29)

cURL's Man Page指定了三种类型的“特殊”详细输出:

  

以'&gt;'开头的行表示由curl发送的“标题数据”,'&lt;'表示在正常情况下隐藏的curl接收的“标题数据”,以“*”开头的行表示curl提供的其他信息。

您可以在HTTP header fields中了解HTTP official publication page。 cURL显示的任何其他输出行都属于相应消息携带的HTTP主体。

那么从*开始,这些信息的实际含义是什么?它们会告知您传输与主机的TCP连接的状态。例如:

  • "Connected to (nil) (182.72.67.14) port 65101 (#0)"表示与服务器端建立TCP连接(在您的情况下:182.72.67.14)。 #0是TCP会话号(仅由cURL使用)。 nil表示无法通过DNS解析主机名(如果已解决,则会显示而不是nil)。

  • "Connection #0 to host (nil) left intact"表示虽然传输已结束,但TCP会话本身仍处于打开状态(未进行FIN / ACK交换),允许您继续重用用于多次传输的相同TCP连接(如果您不想在打开新的TCP连接时牺牲时间,这可能很有用)。

    消息"Re-using existing connection! (#0) with host (nil)"支持这一点,表明cURL确实是这样,使用现有的TCP连接(来自之前的传输)。

答案 1 :(得分:2)

标记为<是HTTP标头。您可以详细了解http标头及其含义here *标记为curl的详细信息显示在stderr上。