成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

基于C#動(dòng)手實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)器WebServer-創(chuàng)新互聯(lián)

前言

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

最近在學(xué)習(xí)網(wǎng)絡(luò)原理,突然萌發(fā)出自己實(shí)現(xiàn)一個(gè)網(wǎng)絡(luò)服務(wù)器的想法,并且由于第三代小白機(jī)器人的開發(fā)需要,我把之前使用python、PHP寫的那部分代碼都遷移到了C#(別問我為什么這么喜歡C#),之前使用PHP就是用來處理網(wǎng)絡(luò)請(qǐng)求的,現(xiàn)在遷移到C#了,而Linux系統(tǒng)上并沒有IIS服務(wù)器,自然不能使用ASP.Net,所以這個(gè)時(shí)候自己實(shí)現(xiàn)一個(gè)功能簡單的網(wǎng)絡(luò)服務(wù)器就恰到好處地解決這些問題了。

基本原理

Web Server在一個(gè)B/S架構(gòu)系統(tǒng)中起到的作用不僅多而且相當(dāng)重要,Web開發(fā)者大部分時(shí)候并不需要了解它的詳細(xì)工作機(jī)制。雖然不同的Web Server可能功能并不完全一樣,但是以下三個(gè)功能幾乎是所有Web Server必須具備的:

接收來自瀏覽器端的HTTP請(qǐng)求
將請(qǐng)求轉(zhuǎn)發(fā)給指定Web站點(diǎn)程序(后者由Web開發(fā)者編寫,負(fù)責(zé)處理請(qǐng)求)
向?yàn)g覽器發(fā)送請(qǐng)求處理結(jié)果

下圖顯示W(wǎng)eb Server在整個(gè)Web架構(gòu)系統(tǒng)中所處的重要位置:

基于C#動(dòng)手實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)器Web Server

如上圖,Web Server起到了一個(gè)“承上啟下”的作用(雖然并沒有“上下”之分),它負(fù)責(zé)連接用戶和Web站點(diǎn)。

每個(gè)網(wǎng)站就像一個(gè)個(gè)“插件”,只要網(wǎng)站開發(fā)過程中遵循了Web Server提出的規(guī)則,那么該網(wǎng)站就可以“插”在Web Server上,我們便可以通過瀏覽器訪問網(wǎng)站。

太長不看版原理

瀏覽器想要拿到哪個(gè)文件(html、css、js、image)就和服務(wù)器發(fā)請(qǐng)求信息說我要這個(gè)文件,然后服務(wù)器檢查請(qǐng)求合不合法,如果合法就把文件數(shù)據(jù)傳回給瀏覽器,這樣瀏覽器就可以把網(wǎng)站顯示出來了。(一個(gè)網(wǎng)站一般會(huì)包含n多個(gè)文件)

話不多說,直接上代碼

在C#中有兩種方法可以簡單實(shí)現(xiàn)Web服務(wù)器,分別是直接使用Socket和使用封裝好的HttpListener。

因?yàn)楹笳弑容^方便一些,所以我選擇使用后者。

這是最簡單的實(shí)現(xiàn)一個(gè)網(wǎng)絡(luò)服務(wù)器,可以處理瀏覽器發(fā)過來的請(qǐng)求,然后將指定的字符串內(nèi)容返回。

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請(qǐng)求
    Console.WriteLine("監(jiān)聽端口:" + port);
    Console.Read();
  }

  static void GetContext(IAsyncResult ar)
  {
    HttpListener httpListener = ar.AsyncState as HttpListener;
    HttpListenerContext context = httpListener.EndGetContext(ar); //接收到的請(qǐng)求context(一個(gè)環(huán)境封裝體)

    httpListener.BeginGetContext(new AsyncCallback(GetContext), httpListener); //開始 第二次 異步接收request請(qǐng)求

    HttpListenerRequest request = context.Request; //接收的request數(shù)據(jù)
    HttpListenerResponse response = context.Response; //用來向客戶端發(fā)送回復(fù)

    response.ContentType = "html";
    response.ContentEncoding = Encoding.UTF8;

    using (Stream output = response.OutputStream) //發(fā)送回復(fù)
    {
      byte[] buffer = Encoding.UTF8.GetBytes("要返回的內(nèi)容");
      output.Write(buffer, 0, buffer.Length);
    }
  }
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

新聞名稱:基于C#動(dòng)手實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)器WebServer-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://jinyejixie.com/article34/ccidse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、ChatGPT、商城網(wǎng)站、響應(yīng)式網(wǎng)站、服務(wù)器托管、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
彭州市| 岐山县| 高要市| 徐州市| 绥德县| 东台市| 五原县| 玉山县| 岳西县| 肇源县| 北川| 江城| 高尔夫| 无极县| 康保县| 泾阳县| 巴塘县| 郯城县| 杭州市| 东城区| 锦屏县| 海城市| 吉木萨尔县| 苍溪县| 兰西县| 邛崃市| 平潭县| 尉犁县| 南康市| 松潘县| 容城县| 西峡县| 武鸣县| 西城区| 凤凰县| 增城市| 县级市| 曲水县| 尖扎县| 遵义市| 汕头市|