2013-10-01 13 views
11

Używam biblioteki libcurl do pobrania pliku abc-1.tar z serwera. Chcę poznać znaczenie komunikatu, który jest wyświetlany i proces wykonywania libcurl, aby wyświetlić te komunikaty.Znaczenie komunikatów libcurl i procesu wykonywania

Dla przykładu: I dostarczyć niektóre komunikaty poniżej z tego co wiem podstawowy komunikat oznaczający jak Content-Length oznacza długość pliku, który jest pobierany, itp

Chcę sens wszystkich wiadomości, w szczególności wiadomości, które mają zacząć * (np 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 

Odpowiedz

2

Oznaczono < są HTTP headers.You można przeczytać w szczegółach na temat nagłówków HTTP i ich znaczenia here i naznaczone * są gadatliwe informacji racja dostarczona przez curl, która jest wyświetlana na stderr.

+1

Chcę informacji szczegółowych o oznaczeniu "*". Czy jest jakaś droga, by wiedzieć o tym. –

21

cURL's Man Page określa trzy rodzaje „specjalne” Pełne wyjście:

Linia rozpoczynający się od „>” oznacza „dane nagłówka” Wysłane przez curl, „<” oznacza „dane nagłówka” otrzymane przez zwinięcie który jest ukryte w normalnych przypadkach, a linia zaczynająca się od "*" oznacza dodatkowe informacje dostarczane przez curl.

Możesz przeczytać o HTTP header fields w HTTP official publication page. Wszelkie inne linie wyjściowe wyświetlane przez cURL należą do treści HTTP przenoszonej przez odpowiedni komunikat.

Co to jest rzeczywiste znaczenie tych informacji zaczynając od *, pytasz? Informują cię o statusie połączenia TCP przesyłanego z hostem. Na przykład:

  • "Connected to (nil) (182.72.67.14) port 65101 (#0)" oznacza, że ​​połączenie TCP jest ustanowiony ze strony serwera (w przypadku: 182.72.67.14). Numer #0 jest numerem sesji TCP (który jest używany tylko przez cURL). Numer nil wskazuje, że nazwy hosta nie można było rozwiązać przez DNS (gdyby został rozwiązany, pojawiłby się zamiast nil).

  • "Connection #0 to host (nil) left intact" oznacza, że ​​chociaż przekazanie jest nad sama sesja TCP jest ciągle otwarty (tj nie FIN/wymiana ACK zostały wykonane), co pozwala zachować ponowne użycie tego samego połączenia TCP dla wielu transferów (co może być użytecznym, jeśli nie chcesz poświęcać czasu na otwieranie nowego połączenia TCP).

    Komunikat "Re-using existing connection! (#0) with host (nil)" obsługuje to, wskazując, że cURL rzeczywiście tak jest, jadąc z istniejącym połączeniem TCP (z poprzedniego transferu).

+0

robi '" Połączenie # 0 do hosta (zero) pozostawione nienaruszone "' suggest' keep-alive', jest ustawiane przez serwer? –

+0

@CharlesOkwuagwu Zakładam, że tak, tak. –

Powiązane problemy