2013-10-01 6 views
11

Ich verwende libcurl Bibliothek zum Abrufen abc-1.tar Datei vom Server. Ich will die Bedeutung der Nachricht wissen, die Anzeige und Prozess der Ausführung von libcurl ist, um diese Nachrichten anzuzeigen.Bedeutung von libcurl Nachrichten und Ausführungsprozess

Beispiel: Ich stelle einige Nachrichten unten aus, dass ich wie Content-Length grundlegende Botschaft bedeutet Länge der Datei Bedeutung kennen, die heruntergeladen werden usw.

Ich möchte Bedeutung aller Nachrichten, vor allem Nachrichten, die mit * beginnen sind (zB 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 

Antwort

2

geprägt von < sind HTTP headers.You ausführlich über HTTP-Header und deren Bedeutung here und geprägt von * sind ausführliche Informationen lesen können rmation zur Verfügung gestellt von curl, die auf stderr angezeigt wird.

+1

Ich möchte Detailinformationen von mit * markiert. Gibt es einen Weg darüber zu wissen? –

21

cURL's Man Page gibt drei Arten von „spezieller“ ausführlicher Ausgabe:

Eine Zeile, die mit ‚>‘ bedeutet „Kopfdaten“ von curl gesendet, ‚<‘ bedeutet „Kopfdaten“ von curl empfangen, das ist in normalen Fällen versteckt, und eine mit '*' beginnende Zeile bedeutet zusätzliche Information, die von curl bereitgestellt wird.

Sie können über HTTP header fields im HTTP official publication page lesen. Alle anderen Ausgabezeilen, die von cURL angezeigt werden, gehören zum HTTP-Body, der von der entsprechenden Nachricht übertragen wird.

Also was ist eigentlich die Bedeutung dieser Informationen beginnend mit *, fragen Sie? Sie informieren Sie über den Status der TCP-Verbindung des Transfers mit dem Host. Zum Beispiel:

  • "Connected to (nil) (182.72.67.14) port 65101 (#0)" bedeutet, dass eine TCP-Verbindung mit dem Server hergestellt wird (in Ihrem Fall: 182.72.67.14). Die #0 ist die TCP-Sitzungsnummer (die nur von cURL verwendet wird). Die nil zeigt an, dass der Hostname nicht über DNS aufgelöst werden konnte (wenn es aufgelöst worden wäre, wäre es anstelle von nil erschienen).

  • "Connection #0 to host (nil) left intact" bedeutet, dass, obwohl die Übertragung beendet ist, sich die TCP-Sitzung noch geöffnet ist (dh keine FIN/ACK-Austausch vorgenommen wurden), so dass Sie die gleiche TCP-Verbindung für mehrere Übertragungen halten Wiederverwendung (was könnte nützlich sein, wenn Sie beim Öffnen einer neuen TCP-Verbindung keine Zeit opfern möchten.

    Die Nachricht "Re-using existing connection! (#0) with host (nil)" unterstützt dies und zeigt an, dass cURL tatsächlich eine bestehende TCP-Verbindung aufruft (von einer vorherigen Übertragung).

+0

tut '" Verbindung # 0 zu Host (nil) intakt gelassen "' vorschlagen 'keep-alive', wird vom Server gesetzt? –

+0

@CharlesOkwuagwu würde ich ja annehmen, ja. –