2013-10-01 15 views
11

我正在使用libcurl庫從服務器獲取abc-1.tar文件。想知道作爲libcurl的顯示和執行的過程的消息的意思,顯示這個消息。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

通過<標記是HTTP headers.You能詳細瞭解HTTP標頭和它們的含義讀here 和由*標記是詳細信息由curl提供,顯示在stderr上。

+1

我想要標有'*'的詳細信息。有沒有什麼途徑知道這件事。 –

21

cURL's Man Page指定三種類型的「特殊」的詳細輸出的:

以「>」表示「標頭數據」,由捲曲送出,「<」 A線是指通過捲曲即接收到的「標頭數據」在正常情況下隱藏,並且以'*'開頭的行意味着curl提供的其他信息。

您可以在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會話本身仍然是開放的(沒有FIN/ACK交換已經作出),讓您隨時重複使用多個傳輸相同的TCP連接(這可能如果你不想犧牲打開一個新的TCP連接的時間,這會很有用)。

    消息"Re-using existing connection! (#0) with host (nil)"支持這一點,表明cURL的確使用了現有的TCP連接(來自先前的傳輸)。

+0

''連接#0到主機(零)保持完好「'建議'保持活着',正在由服務器設置? –

+0

@CharlesOkwuagwu我會這樣認爲的,是的。 –