【问题标题】:Meaning of libcurl messages and execution processlibcurl 消息的含义和执行过程
【发布时间】:2013-10-07 05:33:25
【问题描述】:

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

【问题讨论】:

    标签: c linux curl libcurl


    【解决方案1】:

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

    以'>'开头的行表示curl发送的“header data”,'

    您可以在HTTP official publication page 中阅读有关HTTP header fields 的信息。 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 会话本身仍然是打开的(ie 没有进行 FIN/ACK 交换),允许您继续重复使用相同的 TCP 连接多次传输(如果您不想浪费时间打开新的 TCP 连接,这可能很有用)。

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

    【讨论】:

    • "Connection #0 to host (nil) left intact" 是否建议keep-alive,是由服务器设置的吗?
    • @CharlesOkwuagwu 我想是的,是的。
    【解决方案2】:

    &lt;标记的是HTTP headers。您可以详细阅读http headers及其含义here*标记的是curl提供的详细信息,显示在stderr上。

    【讨论】:

    • 我想要'*'标记的详细信息。有什么途径可以了解这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多