Login  

Blog Stats

News

 誠 徵 程 式 設 計 師:
想寫程式想學程式開發系統的七年級生
團隊合作願意學習願意跟小紀一起工作
環境為三百人公司專職開發有二十餘人
意者請把履歷寄到 microchi@gmail.com  

隨筆分類

文章分類

每月文章

影像集

小玩意

小遊戲

旅遊

程式技巧


小紀的天空

1//HttpListener 只支援win2003及xp哦~ 2using System; 3using System.Collections.Generic; 4using System.Text; 5using System.Net; 6using System.IO; 7 8namespace DIOListener 9{ 10 11 public class HttpServer 12 { 13 protected HttpListener Listener; 14 protected bool IsStarted = false; 15 16 //使用傳入一個URI String 例如http://127.0.0.1:8080/ 來開始一個我們的HttpServer 17 public void Start(string strUrl) 18 { 19 if (IsStarted) //已經再Listen就直接Return 20 return; 21 22 if (Listener == null) 23 Listener = new HttpListener(); 24 25 //使用傳入的URI String 例如http://127.0.0.1:8080/ 26 Listener.Prefixes.Add(strUrl); 27 28 IsStarted = true; 29 Listener.Start(); //開始Listen 30 31 //以非同步方式取得Context 32 IAsyncResult result = this.Listener.BeginGetContext( 33 new AsyncCallback(WebRequestCallback), this.Listener); 34 } 35 36 //停止我們的HttpServer 37 public void Stop() 38 { 39 if (Listener != null) 40 { 41 Listener.Close(); 42 Listener = null; 43 IsStarted = false; 44 } 45 } 46 47 //有個Web需求進來 48 private void WebRequestCallback(IAsyncResult result) 49 { 50 //如果Http Server已經停止則不理會 51 if (Listener == null) 52 return; 53 54 //取得Context 55 HttpListenerContext Context = this.Listener.EndGetContext(result); 56 57 //立即開始另一個非同步取得Context 58 Listener.BeginGetContext(new AsyncCallback(WebRequestCallback), this.Listener); 59 60 //處理我們的Web需求 61 ProcessRequest(Context); 62 } 63 64 //處理我們的Web需求 65 private void ProcessRequest(System.Net.HttpListenerContext Context) 66 { 67 HttpListenerResponse Response = Context.Response; 68 Stream OutputStream = Response.OutputStream; 69 70 //產生回傳的Byte Array 71 byte[] bOutput = System.Text.Encoding.UTF8.GetBytes("<H1>Hello World!!!</H1>"); 72 73 //設定ContentType 74 Response.ContentType = "text/html"; 75 76 //設定內容長度 77 Response.ContentLength64 = bOutput.Length; 78 79 //寫到Stream中 80 OutputStream.Write(bOutput, 0, bOutput.Length); 81 82 //關閉Stream 83 OutputStream.Close(); 84 } 85 } 86}
posted on Friday, October 20, 2006 11:05 PM

What People Are Saying About This Post...

# re: 使用HttpListener寫一個小型的Web Server 5/12/2008 8:13 PM kdh
請問除了.net 2.0 有支援這個功能
那如果我用.net 1.1 vs2003
是否有類似可寫出這樣功能的語法呢?
請高手賜教!

# re: 使用HttpListener寫一個小型的Web Server 5/12/2008 10:11 PM 小紀
2003 .Net 1.1 很麻煩
不要找自已麻煩
裝一下.Net 2.0 及不用錢的 Express 版只要一下下的時間

硬是要作, 可以去反組譯 HttpListener
把有用到的程式寫出來

不要問我如何反組譯~

# re: 使用HttpListener寫一個小型的Web Server 5/13/2008 8:16 PM kdh
感謝你的回答,不過因工作的需求
所以還是要用vs2003 的語法寫
所以還是必需要了解
vs2003 與 listener 相似的類別
我知道送資料是用HttpWebRequest
但收資料是先開 httpChannel
但就不曉得是要用哪一個class的方法接資料
因為不支援HttpListener
不過還是很感謝你分享這篇文章

What do you have to say?

Title:
Name:
Url:
驗證碼  
Comments: