C#
文章平均质量分 71
Anlige
啥都不会,啥也会点。
展开
-
C#实现HTTP服务器:(10)处理文件上传
主要实现对HTTP文件上传的协议分析、请求实体编码分析和请求实体的解析,同时把文件保存到临时目录。原创 2021-09-09 14:36:06 · 3272 阅读 · 0 评论 -
C#实现HTTP服务器:(9)在一个Socket连接内处理多个HTTP请求
前面的文章,我们处理请求都是在一个连接上的,请求处理完,就关闭Stream,同时关闭了底层的Socket。如果一个网页包含的资源比较多,总共可能会需要发起几十上百个Socket连接,造成不必要的网络消耗(TCP的握手、挥手)。同时,浏览器都一个网站发起的连接数是有限制的,所以会导致页面资源加载缓慢的问题。我们来一步步解决这个问问,使一个连接可以处理多个请求。......原创 2021-09-06 17:52:29 · 2130 阅读 · 0 评论 -
C#实现HTTP服务器:(8)解析查询参数和HTTP请求实体
HTTP请求实体的界定:Content-Length、Transfer-Encoding。通过实现一个读取请求实体的Stream来读取整个实体,然后转换成指定编码的文本,再进行解析。原创 2021-09-06 11:15:24 · 1704 阅读 · 3 评论 -
C#实现HTTP服务器:(7)使用缓冲区优化对HTTP请求头的解析
实现一个继承NetworkStream的类BufferedNetworkStream,重写NetworkStream的Read和ReadByte方法,在我们重写的类中,使用一个大的缓冲区来存储数据,供下游应用使用,不再频繁调用基础设施的读取方法原创 2021-09-04 22:14:36 · 839 阅读 · 0 评论 -
C#实现HTTP服务器:(6)将一个JS文件Gzip压缩后,使用Transfer-Encoding标头发送到客户端
实现JS文件压缩传输。原创 2021-09-03 23:35:27 · 655 阅读 · 0 评论 -
C#实现HTTP服务器:(5)压缩传输(GZip,Deflate)
在传输数据的基础上,我们再对数据进行压缩,C#有对这两种压缩算法的实现。即位于`System.IO.Compression`命名空间下的`GZipStream`和`DeflateStream`。这里只讲怎样使用Gzip压缩数据,分别用`Content-Length`和`Transfer-Encoding`两种传输方式实现。原创 2021-09-03 21:19:30 · 2348 阅读 · 0 评论 -
C#实现HTTP服务器:(4)使用Transfer-Encoding标头向客户端发送响应
基于前面封装的响应应答器,尝试使用Chunked方式,向浏览器发送响应。原创 2021-09-03 17:51:26 · 1056 阅读 · 0 评论 -
C#实现HTTP服务器:(3)封装用于响应请求的应答器
为了方便后续处理各种HTTP响应,封装一个简单的应答器,作为各种响应类型的父类。应答器内部会自动生成HttpResponse,并暴露出HttpResponse和一些常用的接口。原创 2021-09-03 17:30:29 · 1251 阅读 · 0 评论 -
C#实现HTTP服务器:(1)解析HTTP请求头
实现一个HTTP服务器监听的类,并尝试解析浏览器发送来的HTTP请求头。原创 2021-09-03 12:37:21 · 3705 阅读 · 0 评论 -
C#实现HTTP服务器:(2)向客户端发送Hello World
前面文章实现了HTTP请求头的解析,现在我们尝试向浏览器发送一些内容。原创 2021-09-03 14:07:29 · 2397 阅读 · 0 评论 -
C#实现一个简单的IOCP模式的服务端监听框架
本类直接继承了SocketAsyncEventArgs,重写其内部的OnCompleted方法来处理客户端连接。只是一个基础的监听框架,具体的业务逻辑需要在子类实现NewClient方法后续其using System;using System.Net;using System.Net.Sockets;using System.Threading;namespace Socks5.Server{ /// <summary> /// 直接继承SocketAsyncE原创 2021-09-02 15:33:18 · 1746 阅读 · 3 评论