Breakpoint-jatkon periaate on hyvin yksinkertainen: HTTP-pyynnön ja vastauksen otsikko eroaa normaalista latauksesta. Kun pyydetään asiakirjaa palvelimella normaalisti, tehty pyyntö ja vastaanotettu pyyntö ovat seuraavat:
Pyyntöotsikko:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost Vastauksen otsikko:
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Kun palvelin tukee taukopisteen jatkamista, pyyntö ja vastaus ovat seuraavat:
Pyyntöotsikko:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360- Vastauksen otsikko:
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Kahden viestin eri osat on merkitty punaisilla osilla. Se näkyy: Range-otsikkoa käytetään asiakkaan halutun lataussijainnin tunnistamiseen. Kun palvelimen vastausnumero on 200, se tarkoittaa, että lataus alkaa tiedoston otsikosta, ja 206 tarkoittaa, että siirto alkaa tiedoston tietystä sijainnista. Toisin sanoen, kun tuet breakpointin jatkamista, voit aloittaa lataamisen mistä tahansa tiedoston osasta, kun taas normaali tapa lataa vain tiedoston otsikosta. Jotta palvelin tukisi breakpointin jatkamista, seuraavat ongelmat on ratkaistava:
1。 Jos kyseessä on jatkamispyyntö, sinun täytyy hankkia asiakkaan vaatima tiedostoalue. Kuten yllä olevasta analyysistä näet, kun asiakas lähettää katkopistettä, Range-kenttä lisätään pakettiotsikkoon, ja voit määrittää, onko kyseessä breakpoint-lähetyspyyntö seuraavasti. merkkijonoalue = pyyntö. Otsikot["Range"]; bool isResume = merkkijono. IsNullOrEmpty (alue);
2。 Vastaa oikein asiakkaalle, jotta asiakaspalvelin voi ilmoittaa, että päätepiste on tuettu jatkamiseen Kun lähetetään pyyntö katkaisupisteestä, vastaava numero asiakkaalle voidaan asettaa seuraavasti: Vastaus. Statuskoodi = 206;
3。 Toimita oikeaa sisältöä, jota asiakas tarvitsee Asiakkaan tarvitseman oikean sisällön toimittaminen sisältää yleensä seuraavat vaiheet Hanki asiakkaan tiedostopyyntöalue analysoimalla alue. Kun breakpoint lähetetään, vaadittu pituus on lyhyempi kuin tiedoston pituus, joten oikea vastaus täytyy asettaa. ContentLength64-ominaisuus. Siirrä tarvittava sisältö oikein Koodiesimerkki:
|