在使用.net平台时,经常要用到远程下载文件或者请求网页之类的操作。而下载或者请求网页最简单有效的方法是使用WebClient。这几天因为用到这个,我就多次测试,发现使用多线程下载的话,速度也没提高上来。而在网上找了好一会也没找到满意的答案,最终咱还是找到解决方案了。
原来WebClient在下载资源或者请求网页时,默认限制了最大连接数是2。也就是说您无论开多少线程系统也只分配两个连接给你下载。问题找到后,那解决也就变得容易了,只要在下载之前,将最大连接数改大就行。也就是在C#里,执行一段代码:
ServicePointManager.DefaultConnectionLimit = 512; // 这里我随便改了一个大点儿的数字,就可以了
接下来我测试了一下,我在2M的带宽下下载图片文件,速度达到了200K以上,算是比较理想的下载速度了,而且这种下载方式对带宽影响不大,这么大的下载速度下,上网浏览网页也不怎么卡。
4条评论
正好遇上,试试!
没用啊,连接的时间还是4,5秒
这个只是提高最大连接数的,并不一定会提高连接的响应时间。
怎么没用?还是30K-60K左右,希望回复下到我邮箱。谢谢