|
|
Opublikowano 27.11.2019 10:42:41
|
|
|

Zasada kontynuacji punktów przerwania jest bardzo prosta, to znaczy, nagłówek zapytania i odpowiedzi HTTP różni się od standardowego pobierania. Podczas żądania dokumentu na serwerze w normalny sposób, żądanie i otrzymanie przez serwer są następujące:
Nagłówek żądania:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost Nagłówek odpowiedzi:
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Gdy serwer obsługuje wznowienie punktu przerwania, żądanie i odpowiedź są następujące:
Nagłówek żądania:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360- Nagłówek odpowiedzi:
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Różne części obu wiadomości oznaczone są czerwonymi sekcjami. Można zobaczyć: Nagłówek Range służy do identyfikacji pożądanej lokalizacji pobierania przez klienta. Gdy numer odpowiedzi serwera wynosi 200, oznacza to, że pobieranie zaczyna się od nagłówka pliku, a 206 oznacza, że transfer zaczyna się z konkretnego miejsca w pliku. Innymi słowy, przy wstrzeżeniu do powrotu do punktu przerwania możesz zacząć pobierać z dowolnej części pliku, podczas gdy normalny sposób pozwala pobierać tylko z nagłówka pliku. Aby serwer wspierał wznowienie punktów przerwania, należy rozwiązać następujące problemy:
1。 Jeśli to wniosek o wznowienie, musisz uzyskać zakres plików wymagany przez klienta. Jak widać z powyższej analizy, gdy klient przesyła punkt przerwania, pole Zasięg jest dodawane do nagłówka pakietu i można określić, czy jest to żądanie przesłania punktu przerwania w następujący sposób. zakres ciągu = żądanie. nagłówki["Range"]; bool isResume = string. IsNullOrEmpty(zakres);
2。 Poprawnie odpowiadaj klientowi, aby powiadomić serwer klienta, że endpoint jest obsługiwany do kontynuacji Podczas wysyłania żądania punktu przerwania odpowiadający mu numer można ustawić następująco: odpowiedź. StatusCode = 206;
3。 Dostarczaj odpowiednie treści, których klient potrzebuje Dostarczanie właściwych treści wymaganych przez klienta zazwyczaj obejmuje następujące kroki Uzyskaj zakres żądań plików klienta, analizując ten zakres. Gdy punkt przerwania jest wysyłany, wymagana długość jest krótsza niż długość pliku, więc należy ustawić poprawną odpowiedź. Własność ContentLength64. Poprawnie przenieś wymaganą treść Przykład kodu:
|
Poprzedni:httplistener nasłuchuje, aby uzyskać parametry żądania POSTNastępny:18 komiksów filozoficznych, z których wszyscy są mistrzami
|