使用异步套接字客户端的原始HTTP解析
本文关键字:原始 HTTP 解析 客户端 异步 套接字 | 更新日期: 2023-09-27 17:54:23
我发现了另一个要求相同类型功能的问题,但这个问题已经超过2年了,所以我想知道从那以后是否有人看到过任何东西。
我基本上已经用标准的。net套接字编写了我自己的异步http/套接字客户端。我维护一个有1024个套接字的池,我有128个"服务"线程使用套接字池从互联网下载网页,速度高达每秒371个页面(今天刚刚在一台Amazon的EC2服务器上测试过)。我还做了另一个异步HTTP客户端,它使用HttpWebRequest
来异步下载网页,但它明显慢得多:我的吞吐量平均约为每秒50个页面(也在亚马逊的EC2上测试),使用相同的设置:1024个HttpWebRequest
池和128个"服务"线程。当然,提供HTTP协议支持将占用更多的处理能力和内存。我希望亚马逊的超大EC2服务器不会受到处理能力/内存的限制,而只受到网络带宽的限制(到目前为止一直是这样)。
我使用的机器的一个例子是亚马逊的高cpu超大实例:
- 7gb内存
- 20个EC2计算单元(8个虚拟核,每个2.5个EC2计算单元)
- 1690gb实例存储
- 64位平台
- I/O性能:高
- API名称:c1.xlarge
我可以写我自己的HTTP处理符合HTTP协议,但它将节省我的工作,痛苦和痛苦,如果有一个现成的解决方案,是快速和强大的。
我至少需要以下功能:
- 创建一个HTTP HEAD/GET(或者POST)请求 解析二进制流的HTTP响应
- 支持cookie
- LGP许可证(LGPL)
有人知道这样的解吗?
我不知道HttpWebRequest
内部是如何与插座一起工作的。打开/关闭套接字可能会对性能造成很大影响。WebClient
使用keep-alive,可能工作得更好。
既然您已经开始使用套接字,我将坚持使用它们。请随意从我的webserver项目中获取内容:http://webserver.codeplex.com
我的解析器:
http://webserver.codeplex.com/SourceControl/changeset/view/56552 671689