學習c#時,經常會遇到web伺服器功能的程式設計問題,這裡將介紹c#實現web伺服器功能的程式設計問題的解決方法。
c#實現web伺服器功能的程式設計
根據http協議的作用原理,實現get請求的web伺服器程式的方法如下:
建立tcplistener類物件,監聽某埠(任意輸入閒置埠 如:8080 )。等待、接受客戶機連線到該埠,得到與客戶機連線的socket;從與socket關聯的輸入流中讀取一行客戶機提交的請求資訊,請求資訊的格式為:get 路徑/檔名 http/1.0。從請求資訊中獲取請求型別。如果請求型別是get,則從請求資訊中獲取所訪問的html檔名。沒有html檔名時,則以index.html作為檔名;
如果html檔案存在,則開啟html檔案,把http頭資訊和html檔案內容通過socket傳回給web瀏覽器,然後關閉檔案。否則傳送錯誤資訊給web瀏覽器;關閉與相應web瀏覽器連線的socket字。
c#實現web伺服器功能的**如下:
console.writeline("連線失敗....");
} catch (exception e)
", e );
} }
public static void main()
public void startlisten()
\n",mysocket.remoteendpoint) ;
byte
breceive
= new
byte[1024] ;
int i=
mysocket
.receive(breceive,breceive.length,0) ;
//轉換成字串型別
string
sbuffer
= encoding
.ascii.getstring(breceive);
//只處理"get"請求型別
if (sbuffer.substring(0,3) != "get" )
// 查詢 "http" 的位置
// 得到請求型別和檔案目錄檔名
srequest
= sbuffer
.substring(0,istartpos - 1);
srequest.replace("\\","/");
//如果結尾不是檔名也不是以"/"結尾則加"/"
if ((srequest.indexof(".")<
1) && (!srequest.endswith("/")))
//得帶請求檔名
istartpos
= srequest
.lastindexof("/") + 1;
srequest
srequestedfile
= srequest.substring(istartpos);
//得到請求檔案目錄
sdirname
= srequest
.substring(srequest.indexof("/"), srequest.lastindexof("/")-3);
//獲取虛擬目錄物理路徑
slocaldir
= smywebserverroot
; console.writeline("請求檔案目錄 : " + slocaldir);
if (
slocaldir.length
== 0 )
if (
srequestedfile.length
== 0 )
string
smimetype
= "text/html"
; sphysicalfilepath
= slocaldir
+ srequestedfile;
console.writeline("請求檔案: " + sphysicalfilepath);
C 實現WEB伺服器
www的工作基於客戶機 伺服器計算模型,由web 瀏覽器 客戶機 和web伺服器 伺服器 構成,兩者之間採用超文字傳送協議 http 進行通訊,http協議的作用原理包括四個步驟 連線,請求,應答。根據上述http協議的作用原理,本文實現了get請求的web伺服器程式的方法,通過建立tcpliste...
C 實現WEB伺服器
c 實現web伺服器 www.itonline.gd.cn 這只是乙個簡單的用c 寫的web伺服器,只實現了get方式的對html檔案的請求,有興趣的朋友可以在此基礎之上繼續開發更多功能,小弟學c 不久,如有錯漏,望請見涼!摘要 www的工作基於客戶機 伺服器計算模型,由web瀏覽器 客戶機 和we...
C 實現WEB伺服器
www的工作基於客戶機 伺服器計算模型,由web 瀏覽器 客戶機 和web伺服器 伺服器 構成,兩者之間採用超文字傳送協議 http 進行通訊,http協議的作用原理包括四個步驟 連線,請求,應答。根據上述http協議的作用原理,本文實現了get請求的web伺服器程式的方法,通過建立tcpliste...