1、使用方法html
1. Start()方法 容許此實例接受傳入的請求。即開始監聽瀏覽器
2. Stop()方法 處理完全部當前排隊的請求後關閉HttpListener對象服務器
3. GetContext()方法 等待傳入的請求接受到請求時返回 就如同上一篇的Socket實現服務器同樣 有一個Accept()方法他倆個差很少都是等待傳入的請求還有 一點就是GetContext()方法也會阻塞線程,當客戶端的請求到達時,返回一個HttpListenerContext對象,處理客戶端所發送過來的請求。
4.1 Request 獲取表示客戶端資源的HttpListenerRequest對象。編碼
4.1.1 AcceptType 獲取客戶端接受到的MIME類型。
4.1.2 UserLanguages 獲取語言信息。
4.1.3 UserAgent 獲取客戶端提供的用戶代理。
4.1.4 Headers 獲取在請求中發送的標頭名稱/值對的集合 --->獲取HttpListenerRequest類沒有提供的一下屬性。
4.2 Response 該屬性得到HttpListenerResponse對象,該對象將被髮送到客戶端以響應客戶端的請求。spa
4.2.1 ContextLength64 獲取或設置響應中包括的正文數據的字節數。
4.2.2 ContextType 獲取或設置返回內容的 MIME 類型。線程
經過流的方式將響應報文體的內容發送給客戶端瀏覽器。代理
2、源碼code
public void SetWebServer() { //建立監聽器 using (var httpListener = new HttpListener()) { //監聽的路徑 httpListener.Prefixes.Add("http://localhost:8889/"); //設置匿名訪問 httpListener.AuthenticationSchemes = AuthenticationSchemes.Anonymous; //開始監聽 httpListener.Start(); while (true) { //等待傳入的請求接受到請求時返回,它將阻塞線程,直到請求到達 var context = httpListener.GetContext(); //取得請求的對象 HttpListenerRequest request = context.Request; Console.WriteLine("{0} {1} HTTP/1.1", request.HttpMethod, request.RawUrl); Console.WriteLine("Accept: {0}", string.Join(",", request.AcceptTypes)); Console.WriteLine("Accept-Language: {0}", string.Join(",", request.UserLanguages)); Console.WriteLine("User-Agent: {0}", request.UserAgent); Console.WriteLine("Accept-Encoding: {0}", request.Headers["Accept-Encoding"]); Console.WriteLine("Connection: {0}", request.KeepAlive ? "Keep-Alive" : "close"); Console.WriteLine("Host: {0}", request.UserHostName); Console.WriteLine("Pragma: {0}", request.Headers["Pragma"]); // 取得迴應對象 HttpListenerResponse response = context.Response; // 設置迴應頭部內容,長度,編碼 response.ContentEncoding = Encoding.UTF8; response.ContentType = "text/plain;charset=utf-8"; var path = @"C:\Users\youziku\Desktop\wendang\"; //訪問的文件名 var fileName = request.Url.LocalPath; //讀取文件內容 var buff = File.ReadAllBytes(path + fileName); response.ContentLength64 = buff.Length; // 輸出迴應內容 System.IO.Stream output = response.OutputStream; output.Write(buff, 0, buff.Length); // 必須關閉輸出流 output.Close(); } } }
來源:b̶i̶n̶g̶.̶ 與 李二餅htm