中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

基于C#動手實現(xiàn)網絡服務器WebServer-創(chuàng)新互聯(lián)

前言

創(chuàng)新互聯(lián)是一家專業(yè)提供梅縣企業(yè)網站建設,專注與網站建設、成都網站設計、H5高端網站建設、小程序制作等業(yè)務。10年已為梅縣眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網站建設公司優(yōu)惠進行中。

最近在學習網絡原理,突然萌發(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)中所處的重要位置:

基于C#動手實現(xiàn)網絡服務器Web Server

如上圖,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)

搜索引擎優(yōu)化
沅江市| 乌拉特前旗| 涞水县| 叙永县| 南乐县| 华阴市| 安顺市| 长沙市| 宿州市| 阜新市| 浦东新区| 桑植县| 旅游| 秭归县| 肇州县| 广丰县| 长泰县| 台前县| 香港| 鹤岗市| 墨江| 邓州市| 江孜县| 正定县| 和平区| 色达县| 连南| 滦平县| 阿荣旗| 土默特左旗| 安徽省| 阿荣旗| 天镇县| 雷波县| 嘉鱼县| 荔波县| 林甸县| 辉县市| 休宁县| 天柱县| 化德县|