C# 使用 Socket 实现 http 协议全功能版

有人说用 Socket 请求 http 服务效率要比 HttpWebRequest 高很多, 但是又没有提供源码或者对比测试结果. 我对此很好奇, 到底能差多少? 所以决定自己写个类实现 Socket 请求 http 的功能.

下面的代码实现了基本的 http ,https 请求, 支持 gzip 解压, 分块传输.

经本人多次试验, 得出如下结论:

如果仅用 Socket 获取文本类型的内容, 且不考虑分块传输的情况, 那么 Socket 方式可比 HttpWebRequest 方式效率高 30%-40%.

如果考虑更多因素,需要做更多处理, 所以多数时候效率不如 HttpWebRequest, 当然与我写的代码效率有很大关系.

欢迎共同探讨技术问题,提供建议, 请留言,我会尽快回复.

 

C# 使用 Socket 实现 http 协议全功能版》上有10个想法

    • cookie是自动管理的. 现在支持get和post方法, 这个类还很原始, 基于socket去实现要写太多的代码, 而且也不是最好的方法, 所以不会继续写下去了. .net 4.5有个 HttpClient 类, 你可以看下.功能很全, 只是也有cookie管理上的问题, 需要自己修复.

  1. 你好,大哥。我是接到任务要用socket实现http,但是我没什么经验。我想问下:
    1.两端是否均为web站点
    2.我们用ASP.NET MVC客户端的调用是否写在Controller里
    3.能否实现断点续传

    • 问题1和2: 客户端与服务端只要遵循HTTP协议即可. 以什么形式存在不重要. 可以是一个网站. 也可以是winform程序. 或者控制台程序. .net 4中有现成的 HttpClient 类, 属于webapi的内容, 你可以了解下.
      问题3: 可以.

回复 老黄瓜刷绿漆 取消回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

验证码