19

我正在使用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
4

2 回答 2

38

cURL 的手册页指定了三种类型的“特殊”详细输出:

以'>'开头的行表示curl发送的“header data”,'<'表示curl接收到的在正常情况下隐藏的“header data”,以'*'开头的行表示curl提供的附加信息。

您可以在HTTP 官方发布页面中阅读有关HTTP 标头字段的信息。cURL 显示的任何其他输出行都属于相应消息所携带的 HTTP 正文。

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

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

  • "Connection #0 to host (nil) left intact"意味着虽然传输结束了,TCP 会话本身仍然是打开的(没有进行 FIN/ACK 交换),允许您继续重复使用相同的 TCP 连接进行多次传输(如果您不想要,这可能很有用以牺牲打开新 TCP 连接的时间)。

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

于 2013-10-01T09:02:50.403 回答
3

标记为 HTTP 标头。您可以在此处<详细了解 http 标头及其含义 ,标记为提供的详细信息,显示在 上。*curlstderr

于 2013-10-01T06:59:53.747 回答