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

O princípio da continuação do ponto de interrupção é muito simples, ou seja, o cabeçalho da mensagem HTTP de requisição e resposta é diferente do download normal. Ao solicitar um documento em um servidor da forma normal, a solicitação feita e o servidor recebido são os seguintes:
Cabeçalho do pedido:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost Cabeçalho da resposta:
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Quando o servidor suporta a retomada de breakpoint, a solicitação e a resposta são as seguintes:
Cabeçalho do pedido:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360- Cabeçalho da resposta:
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf As diferentes partes das duas mensagens são marcadas com seções vermelhas. Pode ser observado: O cabeçalho Range é usado para identificar o local de download desejado pelo cliente. Quando o número de resposta do servidor é 200, significa que o download começa pelo cabeçalho do arquivo, e 206 significa que a transferência começa em um local específico do arquivo. Em outras palavras, ao suportar a retomada por ponto de interrupção, você pode começar a baixar de qualquer parte do arquivo, enquanto a forma normal só pode baixar do cabeçalho do arquivo. Para que o ponto de interrupção de suporte ao servidor seja retomado, os seguintes problemas precisam ser resolvidos:
1。 Se for um pedido de retomada, você precisa obter o intervalo de arquivos exigido pelo cliente. Como você pode ver na análise acima, quando o cliente está transmitindo um ponto de interrupção, o campo Range é adicionado ao cabeçalho do pacote, e você pode determinar se é uma solicitação de transmissão de ponto de interrupção da seguinte forma. Intervalo de string = solicitação. Cabeçalhos["Range"]; bool isResume = string. IsNullOrEmpty (alcance);
2。 Responda corretamente ao cliente para notificar o servidor cliente de que o endpoint é suportado para continuação Ao enviar uma solicitação de ponto de interrupção, o número correspondente para o cliente pode ser definido da seguinte forma: resposta. StatusCode = 206;
3。 Entregue o conteúdo certo que o cliente precisa Entregar o conteúdo correto exigido pelo cliente geralmente envolve os seguintes passos Obtenha o intervalo de solicitações de arquivo do cliente analisando o intervalo. Quando um ponto de interrupção é enviado, o comprimento necessário é menor que o comprimento do arquivo, então a resposta correta precisa ser definida. ConteúdoComprimento64 proprietário. Transfira corretamente o conteúdo necessário Exemplo de código:
|
Anterior:httplistener ouve para obter os parâmetros de solicitação POSTPróximo:18 quadrinhos filosóficos, todos mestres
|