·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> 写一个简易web服务器、ASP.NET核心知识(4)

写一个简易web服务器、ASP.NET核心知识(4)

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23

写一个简易web服务器、asp.net核心知识(4)

前言

昨天尝试了,基于对http协议的探究,我们用控制台写了一个简单的浏览器。尽管浏览器很low,但是对于http协议有个更好的理解。

clipboard说了上面这一段,诸位猜到我要干嘛了吗?(其实不用猜哈,标题里都有,又都不瞎。。。我就是调侃一下,说些没营养的笑话。我认为这样能不那么枯燥,尽管不好笑吧,但这不重要!)

没错,今天要尝试的东西,是自己写一个web服务器。初衷依旧和昨天一样,旨在理解一些东西,而不是真的写出一个多牛的东西。

第一次尝试(V1.0)

1.理论支持

其实关于http协议的理论方面我在《写一个浏览器》的博文中已经说过了,这里不再累述了。

这里主要要说的关于Socket方面的。主要是一个例子,关于Socket如何建立服务端程序的简单的代码掩饰。

       static void Main(string[] args)        {            //创建一个新的Socket,这里我们使用最常用的基于TCP的Stream Socket(流式套接字)            var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, PRotocolType.Tcp);            //将该socket绑定到主机上面的某个端口            socket.Bind(new ipEndPoint(IPAddress.Any, 4530));            //启动监听,并且设置一个最大的队列长度            socket.Listen(4);            //到这里我们的Socket已经运行起来了,但仅仅是运行起来,什么都不会做的!            Console.WriteLine("Server is ready!");            Console.Read();        }

打开调试一口,因为要监听某个端口,windows会有这样的一个提示。点允许就好了。

clipboard[1]

从上面例子看,socket的职责仅仅是监听4530端口,什么都不会做的!

就像一个人的耳朵。他会聆听,但是不会倾诉。职责所限,我们需要一个监听4530端口的耳朵。

但是从交流的角度看,web服务器仅仅能聆听是不够的。

请求来了以后(监听到请求以后),我还需要一个既能聆听,又能诉说的Socket。去和请求交流。

刚刚那个socket为啥不能直接交流呢? 不不不,他得继续去聆听新的请求。

2.说说思路

这次实验的主要思路是这样的。

1)监听4530端口

2)当请求来了以后,我们使用Socket socket = serverSocket.Accept();建立一个新的socket。

3)新的socket返回一个字符串给请求方!

完了(读liao)。

也就是说,我们v1.0版本的web服务器,不管你如何请求,他都会返回你同一个字符串!(任性吧?其实我挺喜欢就这样的。)

3.代码

static void Main(string[] args){            //我仅负责聆听,因为你来了,我就得接