|
|
Публикувано в 27.11.2019 г. 10:42:41 ч.
|
|
|

Принципът на продължаване на точката на прекъсване е много прост, тоест заглавието на HTTP заявката и съобщението за отговор е различно от обичайното изтегляне. При искане на документ на сървър по обичайния начин, направената заявка и полученият сървър са следните:
Заглавие на заявката:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost Отговорен заглавие:
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Когато сървърът поддържа възобновяване на точката на прекъсване, заявката и отговорът са както следва:
Заглавие на заявката:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360- Отговорен заглавие:
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Различните части на двете съобщения са маркирани с червени секции. Може да се види: Заглавието Range се използва за идентифициране на желаното от клиента място за изтегляне. Когато номерът на отговора на сървъра е 200, това означава, че изтеглянето започва от заглавката на файла, а 206 означава, че трансферът започва от конкретно място на файла. С други думи, при поддържане на възобновяване на точка на прекъсване, можете да започнете изтегляне от всяка част на файла, докато нормалният начин може да се изтегля само от заглавието на файла. За да се възобнови точката на прекъсване в сървъра, трябва да се решат следните проблеми:
1。 Ако е заявка за възобновяване, трябва да получите необходимия от клиента обхват на файловете. Както виждате от горния анализ, когато клиентът предава точка на прекъсване, полето Range се добавя към заглавието на пакета и можете да определите дали това е заявка за предаване на точка на прекъсване, както следва. обхват на низове = заявка. Headers["Range"]; bool isResume = низ. IsNullOrEmpty(обхват);
2。 Отговорете правилно на клиента, за да уведомите клиентския сървър, че крайната точка е поддържана за продължаване При изпращане на заявка за точка на прекъсване, съответният номер за клиента може да бъде зададен по следния начин: отговор. StatusCode = 206;
3。 Осигурете правилното съдържание, от което клиентът се нуждае Доставянето на правилното съдържание, необходимо от клиента, обикновено включва следните стъпки Вземете обхвата на заявките за файлове на клиента, като анализирате диапазона. Когато се изпраща точка на прекъсване, необходимата дължина е по-къса от дължината на файла, затова трябва да се зададе правилният отговор. ContentLength64 свойства. Прехвърлете необходимото съдържание правилно Пример за код:
|
Предишен:httplistener слуша, за да получи параметрите за заявка на POSTСледващ:18 философски комикса, всички от които са майстори
|