我正在使用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
答案 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
上。