har*_*sar 16 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
Run Code Online (Sandbox Code Playgroud)
Eit*_*n T 31
cURL的Man Page指定了三种类型的"特殊"详细输出:
以">"开头的行表示由curl发送的"标题数据","<"表示在正常情况下隐藏的curl接收的"标题数据",以"*"开头的行表示curl提供的其他信息.
您可以在HTTP官方发布页面中阅读有关HTTP标头字段的信息.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连接(来自先前的传输).