前言
最近在學習網絡原理,突然萌發(fā)出自己實現(xiàn)一個網絡服務器的想法,并且由于第三代小白機器人的開發(fā)需要,我把之前使用python、PHP寫的那部分代碼都遷移到了C#(別問我為什么這么喜歡C#),之前使用PHP就是用來處理網絡請求的,現(xiàn)在遷移到C#了,而Linux系統(tǒng)上并沒有IIS服務器,自然不能使用ASP.Net,所以這個時候自己實現(xiàn)一個功能簡單的網絡服務器就恰到好處地解決這些問題了。
基本原理
Web Server在一個B/S架構系統(tǒng)中起到的作用不僅多而且相當重要,Web開發(fā)者大部分時候并不需要了解它的詳細工作機制。雖然不同的Web Server可能功能并不完全一樣,但是以下三個功能幾乎是所有Web Server必須具備的:
接收來自瀏覽器端的HTTP請求
將請求轉發(fā)給指定Web站點程序(后者由Web開發(fā)者編寫,負責處理請求)
向瀏覽器發(fā)送請求處理結果
下圖顯示Web Server在整個Web架構系統(tǒng)中所處的重要位置:
如上圖,Web Server起到了一個“承上啟下”的作用(雖然并沒有“上下”之分),它負責連接用戶和Web站點。
每個網站就像一個個“插件”,只要網站開發(fā)過程中遵循了Web Server提出的規(guī)則,那么該網站就可以“插”在Web Server上,我們便可以通過瀏覽器訪問網站。
太長不看版原理
瀏覽器想要拿到哪個文件(html、css、js、image)就和服務器發(fā)請求信息說我要這個文件,然后服務器檢查請求合不合法,如果合法就把文件數(shù)據(jù)傳回給瀏覽器,這樣瀏覽器就可以把網站顯示出來了。(一個網站一般會包含n多個文件)
話不多說,直接上代碼
在C#中有兩種方法可以簡單實現(xiàn)Web服務器,分別是直接使用Socket和使用封裝好的HttpListener。
因為后者比較方便一些,所以我選擇使用后者。
這是最簡單的實現(xiàn)一個網絡服務器,可以處理瀏覽器發(fā)過來的請求,然后將指定的字符串內容返回。
class Program { static void Main(string[] args) { string port = "8080"; HttpListener httpListener = new HttpListener(); httpListener.Prefixes.Add(string.Format("http://+:{0}/", port)); httpListener.Start(); httpListener.BeginGetContext(new AsyncCallback(GetContext), httpListener); //開始異步接收request請求 Console.WriteLine("監(jiān)聽端口:" + port); Console.Read(); } static void GetContext(IAsyncResult ar) { HttpListener httpListener = ar.AsyncState as HttpListener; HttpListenerContext context = httpListener.EndGetContext(ar); //接收到的請求context(一個環(huán)境封裝體) httpListener.BeginGetContext(new AsyncCallback(GetContext), httpListener); //開始 第二次 異步接收request請求 HttpListenerRequest request = context.Request; //接收的request數(shù)據(jù) HttpListenerResponse response = context.Response; //用來向客戶端發(fā)送回復 response.ContentType = "html"; response.ContentEncoding = Encoding.UTF8; using (Stream output = response.OutputStream) //發(fā)送回復 { byte[] buffer = Encoding.UTF8.GetBytes("要返回的內容"); output.Write(buffer, 0, buffer.Length); } } }
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
新聞名稱:基于C#動手實現(xiàn)網絡服務器WebServer-創(chuàng)新互聯(lián)
文章網址:http://www.rwnh.cn/article34/ccidse.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、ChatGPT、商城網站、響應式網站、服務器托管、品牌網站建設
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容