|
|
Publicado en 27/11/2019 10:42:41
|
|
|

El principio de continuación por punto de interrupción es muy sencillo, es decir, la cabecera del mensaje HTTP de solicitud y respuesta es diferente de la descarga normal. Al solicitar un documento en un servidor de la manera habitual, la solicitud realizada y el servidor recibido son los siguientes:
Cabecera de la solicitud:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost Cabecera de respuesta:
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Cuando el servidor soporta la reanudación de puntos de interrupción, la solicitud y respuesta son las siguientes:
Cabecera de la solicitud:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360- Cabecera de respuesta:
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Las diferentes partes de los dos mensajes están marcadas con secciones rojas. Se puede ver: El encabezado de rango se utiliza para identificar la ubicación de descarga deseada por el cliente. Cuando el número de respuesta del servidor es 200, significa que la descarga comienza desde la cabecera del archivo, y 206 significa que la transferencia comienza desde una ubicación específica del archivo. En otras palabras, al soportar la reanudación por punto de interrupción, puedes empezar a descargar desde cualquier parte del archivo, mientras que la forma normal solo puede descargar desde la cabecera del archivo. Para que el punto de interrupción de soporte del servidor se reanude, deben resolverse los siguientes problemas:
1。 Si es una solicitud de reanudación, necesitas obtener el rango de archivos que requiere el cliente. Como puedes ver en el análisis anterior, cuando el cliente transmite un punto de interrupción, el campo Rango se añade a la cabecera del paquete, y puedes determinar si es una solicitud de transmisión de punto de interrupción de la siguiente manera. Rango de cadenas = solicitud. Cabeceras["Rango"]; bool isResume = cadena. IsNullOrEmpty (rango);
2。 Responder correctamente al cliente para notificar al servidor cliente que el endpoint es compatible con la continuación Al enviar una solicitud de punto de interrupción, el número correspondiente para el cliente puede establecerse de la siguiente manera: respuesta. Código de Estado = 206;
3。 Entrega el contenido adecuado que el cliente necesita Entregar el contenido correcto que requiere el cliente generalmente implica los siguientes pasos Obtén el rango de solicitud de archivo del cliente analizando el rango. Cuando se envía un punto de interrupción, la longitud requerida es menor que la longitud del archivo, por lo que es necesario establecer la respuesta correcta. ContentLength64 propiedad. Transfiere correctamente el contenido requerido Ejemplo de código:
|
Anterior:httplistener escucha para obtener los parámetros de la solicitud POSTPróximo:18 cómics filosóficos, todos ellos maestros
|