我正在使用C#编写一个应用程序来测量我下载网页的速度。我提供了一个唯一域名列表,然后生成X个线程并执行HTTPWebRequests,直到域名列表被消耗完。问题是,无论我使用多少个线程,我只能得到大约3个页面每秒。
我发现System.Net.ServicePointManager.DefaultConnectionLimit是2,但我认为这与每个域的连接数有关。由于列表中的每个域都是唯一的,这不应该是问题。
然后我发现GetResponse()方法会阻止其他进程访问,直到WebResponse被关闭:http://www.codeproject.com/KB/IP/Crawler.aspx#WebRequest,我没有找到任何其他支持这种说法的信息,但我使用套接字实现了一个HTTP请求,并注意到了显着的加速(4倍至6倍)。
所以我的问题是:有人知道HttpWebRequest对象的工作原理吗?除了上面提到的方法之外,还有解决方法吗?或者有没有用C#编写的高速网络爬虫的例子?
我发现System.Net.ServicePointManager.DefaultConnectionLimit是2,但我认为这与每个域的连接数有关。由于列表中的每个域都是唯一的,这不应该是问题。
然后我发现GetResponse()方法会阻止其他进程访问,直到WebResponse被关闭:http://www.codeproject.com/KB/IP/Crawler.aspx#WebRequest,我没有找到任何其他支持这种说法的信息,但我使用套接字实现了一个HTTP请求,并注意到了显着的加速(4倍至6倍)。
所以我的问题是:有人知道HttpWebRequest对象的工作原理吗?除了上面提到的方法之外,还有解决方法吗?或者有没有用C#编写的高速网络爬虫的例子?