|
|
Veröffentlicht am 27.11.2019 10:42:41
|
|
|

Das Prinzip der Breakpoint-Fortsetzung ist sehr einfach, das heißt, der Header der HTTP-Anfrage und Antwort unterscheidet sich vom normalen Download. Wenn ein Dokument auf einem Server auf übliche Weise angefordert wird, sind die gestellten Anfragen und der empfangene Server wie folgt:
Anfrage-Header:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost Antwort-Header:
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Wenn der Server die Breakpoint-Wiederaufnahme unterstützt, sind Anfragen und Antwort wie folgt:
Anfrage-Header:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360- Antwort-Header:
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Die verschiedenen Teile der beiden Nachrichten sind mit roten Abschnitten markiert. Es ist zu sehen: Der Range-Header wird verwendet, um den gewünschten Download-Standort des Kunden zu identifizieren. Wenn die Antwortnummer des Servers 200 ist, bedeutet das, dass der Download vom Dateiheader beginnt, und 206 bedeutet, dass die Übertragung an einem bestimmten Speicherort der Datei beginnt. Mit anderen Worten: Wenn man die Breakpoint-Wiederaufnahme unterstützt, kann man von jedem Teil der Datei herunterladen, während man normalerweise nur vom Dateiheader herunterladen kann. Damit der Server die Breakpoint-Wiederaufnahme unterstützt, müssen folgende Probleme gelöst werden:
1。 Handelt es sich um eine Wiederaufnahmeanfrage, müssen Sie den vom Client geforderten Dateibereich erhalten. Wie Sie aus der obigen Analyse sehen können, wird beim Senden eines Breakpoints das Range-Feld zum Paketheader hinzugefügt, und Sie können wie folgt feststellen, ob es sich um eine Breakpoint-Übertragungsanfrage handelt. String-Bereich = Anfrage. Headers["Range"]; bool isResume = String. IsNullOrEmpty(Bereich);
2。 Antworten Sie korrekt auf den Client, um den Client-Server darüber zu informieren, dass der Endpunkt für die Fortsetzung unterstützt wird Beim Senden einer Anfrage nach einem Breakpoint kann die entsprechende Zahl für den Client wie folgt gesetzt werden: Antwort. StatusCode = 206;
3。 Liefern Sie die richtigen Inhalte, die der Kunde benötigt Die Bereitstellung der vom Kunden gewünschten Inhalte umfasst in der Regel folgende Schritte Erhalten Sie den Dateianforderungsbereich des Kunden, indem Sie den Bereich analysieren. Wenn ein Breakpoint gesendet wird, ist die erforderliche Länge kürzer als die der Datei, daher muss die korrekte Antwort gesetzt werden. ContentLength64-Eigenschaft. Übertragen Sie die erforderlichen Inhalte korrekt Codebeispiel:
|
Vorhergehend:httplistener hört, um die POST-Anfrageparameter zu erhaltenNächster:18 philosophische Comics, die alle Meister sind
|