|
|
Zverejnené 27. 11. 2019 10:42:41
|
|
|

Princíp pokračovania v bode prerušenia je veľmi jednoduchý, teda hlavička HTTP požiadavky a odpovede sa líši od bežného sťahovania. Pri požiadavke na dokument na serveri bežným spôsobom sú požiadavky, ktoré server prijíma, nasledovné:
Hlavička požiadavky:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost Hlavička odpovede:
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Keď server podporuje obnovenie breakpointu, požiadavky a reakcie sú nasledovné:
Hlavička požiadavky:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360- Hlavička odpovede:
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Rôzne časti oboch správ sú označené červenými sekciami. Dá sa to vidieť: Hlavička Range sa používa na identifikáciu požadovaného miesta sťahovania zákazníka. Keď je číslo odpovede servera 200, znamená to, že sťahovanie začína z hlavičky súboru, a 206 znamená, že prenos začína z konkrétneho miesta súboru. Inými slovami, pri podpore obnovenia breakpointu môžete začať sťahovať z ktorejkoľvek časti súboru, zatiaľ čo bežným spôsobom je možné sťahovať len z hlavičky súboru. Aby server podporoval obnovenie breakpointov, je potrebné vyriešiť nasledujúce problémy:
1。 Ak ide o žiadosť o obnovenie, musíte získať rozsah súborov požadovaný klientom. Ako vidíte z vyššie uvedenej analýzy, keď klient vysiela bod prerušenia, pole Range sa pridá do hlavičky paketu a môžete určiť, či ide o požiadavku na prenos prerušujúceho bodu nasledovne. rozsah reťazca = požiadavka. Hlavičky["Range"]; bool isResume = reťazec. IsNullOrEmpty(range);
2。 Správne reagovať klientovi, aby upozornil klientský server, že koncový bod je podporovaný na pokračovanie Pri odosielaní požiadavky na bod prerušenia možno nastaviť príslušné číslo pre klienta nasledovne: Odpoveď. StatusCode = 206;
3。 Dodávajte správny obsah, ktorý klient potrebuje Dodanie správneho obsahu, ktorý klient vyžaduje, zvyčajne zahŕňa nasledujúce kroky Získajte rozsah požiadaviek na súbor klienta analýzou tohto rozsahu. Keď je odoslaný breakpoint, požadovaná dĺžka je kratšia ako dĺžka súboru, preto je potrebné nastaviť správnu odpoveď. PropertyContentLength64. Správne preneste požadovaný obsah Príklad kódu:
|
Predchádzajúci:httplistener počúva, aby získal parametre požiadavky POSTBudúci:18 filozofických komiksov, z ktorých všetci sú majstri
|