|
|
Postat pe 27.11.2019 10:42:41
|
|
|

Principiul continuării punctului de întrerupere este foarte simplu, adică antetul mesajului HTTP de cerere și răspuns este diferit de descărcarea normală. Când se solicită un document pe un server în mod normal, cererea făcută și serverul primit sunt următoarele:
Antetul cererii:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost Antet Răspuns:
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Când serverul suportă reluarea punctelor de întrerupere, cererea și răspunsul sunt următoarele:
Antetul cererii:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360- Antet Răspuns:
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Părțile diferite ale celor două mesaje sunt marcate cu secțiuni roșii. Se poate observa: Antetul Range este folosit pentru a identifica locația dorită de descărcare a clientului. Când numărul de răspuns al serverului este 200, înseamnă că descărcarea începe din antetul fișierului, iar 206 înseamnă că transferul începe dintr-o locație specifică a fișierului. Cu alte cuvinte, când susții reluarea punctelor de întrerupere, poți începe să descarci din orice parte a fișierului, în timp ce metoda normală poate descărca doar din antetul fișierului. Pentru a face ca punctul de întrerupere pentru suportul serverului să fie reluat, trebuie rezolvate următoarele probleme:
1。 Dacă este o cerere de reluare, trebuie să obții intervalul de fișiere cerut de client. După cum puteți vedea din analiza de mai sus, când clientul transmite un punct de întrerupere, câmpul Range este adăugat la antetul pachetului și puteți determina dacă este o cerere de transmisie de punct de întrerupere după cum urmează. Interval de șiruri = cerere. Antete["Range"]; bool isResume = string. IsNullOrEmpty(distanță);
2。 Răspunde corect clientului pentru a notifica serverul client că endpoint-ul este suportat pentru continuare Când se trimite o cerere pentru un punct de întrerupere, numărul corespunzător clientului poate fi setat astfel: răspuns. StatusCode = 206;
3。 Livrează conținutul potrivit de care clientul are nevoie Livrarea conținutului corect cerut de client implică, în general, următorii pași Obține intervalul de solicitare al clientului analizând intervalul. Când se trimite un punct de întrerupere, lungimea necesară este mai scurtă decât lungimea fișierului, astfel că trebuie setată răspunsul corect. Proprietatea ContentLength64. Transferă corect conținutul necesar Exemplu de cod:
|
Precedent:httplistener ascultă pentru a obține parametrii cererii POSTUrmător:18 benzi desenate filosofice, toate maeștri
|