|
|
Pubblicato su 27/11/2019 10:42:41
|
|
|

Il principio della continuazione del punto di interruzione è molto semplice, cioè l'intestazione del messaggio HTTP request e reply è diversa dal normale download. Quando si richiede un documento su un server nel modo normale, la richiesta fatta e il server ricevuto sono i seguenti:
Intestazione della richiesta:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost Intestazione della risposta:
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Quando il server supporta il ripristino dei punti di interruzione, la richiesta e la risposta sono le seguenti:
Intestazione della richiesta:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360- Intestazione della risposta:
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Le diverse parti dei due messaggi sono contrassegnate con sezioni rosse. Si può vedere: L'intestazione Range viene utilizzata per identificare la posizione di download desiderata dal cliente. Quando il numero di risposta del server è 200, significa che il download inizia dall'intestazione del file, mentre 206 significa che il trasferimento parte da una posizione specifica del file. In altre parole, quando si supporta la ripresa dei punti di interruzione, puoi iniziare a scaricare da qualsiasi parte del file, mentre il modo normale può scaricare solo dall'intestazione del file. Per far riprendere il supporto server al punto di interruzione, devono essere risolti i seguenti problemi:
1。 Se si tratta di una richiesta di ripresa, devi ottenere l'intervallo di file richiesto dal cliente. Come si può vedere dall'analisi sopra, quando il client trasmette un punto di interruzione, il campo Range viene aggiunto all'intestazione del pacchetto e si può determinare se si tratta di una richiesta di trasmissione di punto di interruzione come segue. intervallo di stringhe = richiesta. Header["Range"]; bool isResume = stringa. IsNullOrEmpty (raggio);
2。 Rispondi correttamente al client per notificare al client server che l'endpoint è supportato per la continuazione Quando si invia una richiesta di breakpoint, il numero corrispondente per il client può essere impostato come segue: risposta. Codice di Stato = 206;
3。 Consegna i contenuti giusti di cui il cliente ha bisogno La consegna dei contenuti corretti richiesti dal cliente generalmente comporta i seguenti passaggi Ottieni l'intervallo delle richieste file del cliente analizzandolo. Quando viene inviato un punto di interruzione, la lunghezza richiesta è più corta della lunghezza del file, quindi è necessario impostare la risposta corretta. ProprietàContenutoLunga64. Trasferire correttamente i contenuti richiesti Esempio di codice:
|
Precedente:httplistener ascolta per ottenere i parametri della richiesta POSTProssimo:18 fumetti filosofici, tutti maestri
|