用HttpListener實現檔案斷點續傳

2021-04-17 15:53:05 字數 1249 閱讀 5768

普通方式請求伺服器上的乙個文時,所發出的請求和接受到的伺服器如下:

request header

cache-control: no-cache

connection: close

pragma: no-cache

accept: */*

host: localhost

response header

當伺服器支援斷點續傳時,請求和應答如下:

request header

:cache-control: no-cache

connection: close

pragma: no-cache

accept: */*

host: localhost

range: bytes=15360-

response header:

兩個報文的不同部分已用紅色部分標記出來。可以看出:

客戶端報文頭中通過

要使得伺服器支援斷點續傳,需要解決以下幾個問題:

1。需要判斷客戶端是否是續傳請求,如果是續傳請求時,需要獲取客戶端所需的檔案範圍。

從上面的分析可以看到,當客戶端為斷點傳輸時,報文頭里會增加range欄位,則可以通過如下方式判斷是否是斷點傳輸請求。

string range = request.headers["range"];

bool isresume = string.isnullorempty(range);

2。對客戶端做正確的應答相應,以通知客戶端伺服器支援端點續傳

當為斷點傳輸請求時,對客戶端的相應號可以通過如下方式設定:

response.statuscode = 206;

3。傳送客戶端所需正確的內容

傳送客戶端所需正確的內容一般需要經過以下幾個步驟

**示例:

在未寫完所有檔案時,如果客戶端關閉連線,會拋此異常

}static

void copystream(stream orgstream, stream desstream)

}

HttpListener 實現web伺服器

一 使用方法 1.start 方法 允許此例項接受傳入的請求。即開始監聽 2.stop 方法 處理完所有當前排隊的請求後關閉httplistener物件 4.1.1 accepttype 獲取客戶端接受到的mime型別。4.1.2 userlanguages 獲取語言資訊。4.1.3 userage...

HttpListener的幾種用法

簡單的httplistener 示例 1 public static void newmethod1 2 8888 新增需要監聽的url範圍 5 listener.start 開始監聽埠,接收客戶端請求 6 console.writeline listening.78 阻塞主函式至接收到乙個客戶端請...

基於HttpListener的web伺服器

前面兩篇文章分別介紹了基於原始socket的web伺服器和基於tcplistener的web伺服器,本篇文章將繼續介紹另外一種基於httplistener的。httplistener進一步的簡化了http協議的監聽,僅需通過字串的方法提供監聽的位址和埠號以及虛擬路徑,就可以開始監聽工作了。設定字首,...