|
|
Опубліковано 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 філософських коміксів, усі з яких є майстрами
|