普通方式請求伺服器上的乙個文時,所發出的請求和接受到的伺服器如下:
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協議的監聽,僅需通過字串的方法提供監聽的位址和埠號以及虛擬路徑,就可以開始監聽工作了。設定字首,...