|
|
Diposting pada 27/11/2019 10.42.41
|
|
|

Prinsip kelanjutan breakpoint sangat sederhana, yaitu header permintaan HTTP dan pesan balasan berbeda dari unduhan normal. Saat meminta dokumen di server dengan cara normal, permintaan yang dibuat dan server yang diterima adalah sebagai berikut:
Header permintaan:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost Header respons:
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Saat server mendukung dimulainya kembali titik henti, permintaan dan respons adalah sebagai berikut:
Header permintaan:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360- Header respons:
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Bagian yang berbeda dari kedua pesan ditandai dengan bagian merah. Dapat dilihat: Header Rentang digunakan untuk mengidentifikasi lokasi unduhan yang diinginkan pelanggan. Ketika nomor jawaban server adalah 200, itu berarti unduhan dimulai dari header file, dan 206 berarti transfer dimulai dari lokasi file tertentu. Dengan kata lain, saat mendukung dimulainya kembali breakpoint, Anda dapat mulai mengunduh dari bagian mana pun dari file, sedangkan cara normal hanya dapat mengunduh dari header file. Untuk membuat server mendukung dimulainya kembali titik henti, masalah berikut perlu diselesaikan:
1。 Jika ini adalah permintaan dilanjutkan, Anda perlu mendapatkan rentang file yang diperlukan oleh klien. Seperti yang Anda lihat dari analisis di atas, ketika klien mentransmisikan titik henti, bidang Rentang ditambahkan ke header paket, dan Anda dapat menentukan apakah itu permintaan transmisi titik henti sebagai berikut. rentang string = permintaan. Headers["Rentang"]; bool isResume = string. IsNullOrEmpty(rentang);
2。 Tanggapi klien dengan benar untuk memberi tahu server klien bahwa titik akhir didukung untuk kelanjutan Saat mengirim permintaan untuk titik henti, nomor yang sesuai untuk klien dapat diatur sebagai berikut: tanggapan. Kode Status = 206;
3。 Memberikan konten yang tepat yang dibutuhkan klien Memberikan konten yang benar yang diperlukan oleh klien umumnya melibatkan langkah-langkah berikut Dapatkan rentang permintaan file klien dengan menganalisis rentang. Saat titik henti dikirim, panjang yang diperlukan lebih pendek dari panjang file, sehingga respons yang benar perlu diatur. ContentLength64. Mentransfer konten yang diperlukan dengan benar Contoh kode:
|
Mantan:httplistener mendengarkan untuk mendapatkan parameter permintaan POSTDepan:18 komik filosofis, semuanya master
|