Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 19401|Răspunde: 2

[ASP.NET] ASP.NET folosește HttpListener pentru a relua punctele de întrerupere ale fișierelor

[Copiază linkul]
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 POST
Următor:18 benzi desenate filosofice, toate maeștri
Postat pe 27.11.2019 13:14:14 |
Mark
Postat pe 30.11.2019 12:04:39 |
marcat      
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com