gpt4 book ai didi

c# - 使用异步套接字客户端进行原始 HTTP 解析

转载 作者:可可西里 更新时间:2023-11-01 16:31:12 25 4
gpt4 key购买 nike

我找到了 another question要求相同类型的功能,但问题已超过 2 年,所以我想知道是否有人从那时起看到过任何东西。

我基本上是自己写的asynchronous http/socket client使用标准的.NET 套接字。我维护着一个包含 1024 个套接字的池,我有 128 个“服务”线程使用套接字池以每秒高达 371 页的速度从 Internet 下载网页(今天刚刚在单个 Amazon 的 EC2 服务器上进行了测试)。我还制作了另一个异步 HTTP 客户端,它使用 HttpWebRequest 来异步下载网页,但它的速度要慢得多:我的吞吐量平均约为每秒 50 页(也在 Amazon 的 EC2 上测试过),使用相同的设置: 1024 个 HttpWebRequest 和 128 个“服务”线程。

自然,提供HTTP协议(protocol)支持会占用更多的处理能力和内存。我希望使用 Amazon 的超大型 EC2 服务器,我不会受到处理能力/内存的限制,而只会受到网络带宽的限制(到目前为止情况一直如此)。

我正在使用的机器的一个例子是亚马逊的高 CPU 超大实例:

  • 7 GB of memory
  • 20 EC2 Compute Units (8 virtual cores with 2.5 EC2 Compute Units each)
  • 1690 GB of instance storage
  • 64-bit platform
  • I/O Performance: High
  • API name: c1.xlarge

我可以编写自己的符合 HTTP 协议(protocol)的 HTTP 处理,但如果有一个快速且健壮的现成解决方案,它将为我节省大量的工作、痛苦和痛苦。

我至少需要以下功能:

  • 构建 HTTP HEAD/GET(可能还有 POST)请求
  • 从二进制流中解析 HTTP 响应
  • 支持 cookie
  • 导光板许可证 (LGPL)

有人知道任何此类解决方案吗?

最佳答案

我不知道 HttpWebRequest 如何在内部使用套接字。打开/关闭套接字可能会对性能造成很大影响。 WebClient 使用 keep-alive 并且可能工作得更好。

编辑:我做了一些谷歌搜索,我不会接受这个作为答案。 WebClient 似乎是 HttpWebRequest/Response 的包装器:http://www.codeproject.com/Articles/156610/WP7-WebClient-vs-HttpWebRequest.aspx?msg=3775084

更新

既然你已经开始使用套接字,我会坚持使用它们。随意从我的网络服务器项目中获取东西:http://webserver.codeplex.com

我的解析器:

http://webserver.codeplex.com/SourceControl/changeset/view/56552#671689

关于c# - 使用异步套接字客户端进行原始 HTTP 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5874731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com