CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

关于ServicePointManager的ConnectionLimit设置问题

楼主kennylanse(永恒之风)2004-08-01 15:08:49 在 .NET技术 / C# 提问

同一个服务器的WebRequest最大连接数可以通过ServicePointManager的对应uri对象的属性ConnectionLimit进行修改,比如  
  Uri   =   new   Uri("http://localhost");  
  ServicePoint   spSite   =   ServicePointManager.FindServicePoint(uri);  
  spSite.ConnectionLimit   =   4;  
  但是ServicePointManager.DefaultPersistentConnectionLimit和ServicePointManager.DefaultNonPersistentConncetionLimit都是常量,无法修改  
  那样修改了spSite.ConnectionLimit对于实际的WebRequest最大连接数会有作用吗?我想模拟多线程下载,所以建立了对同一url的多个连接,并且对应的Response数据流都没有关闭。我用如下代码进行测试,发现到了第三个连接还是没法响应,这是为什么呢?请高人指点指点  
  string   theUrl   =   "http://localhost/real.rar";  
  Uri   uri   =   new   Uri(theUrl);  
  ServicePoint   spSite   =   ServicePointManager.FindServicePoint(uri);  
  spSite.ConnectionLimit   =   4;  
  Console.WriteLine("Current   Connection:   "+spSite.CurrentConnections);  
  Console.WriteLine("Conncetion   limit:   "+spSite.ConnectionLimit);  
  //test   1  
  HttpWebRequest   requestTest1   =   (HttpWebRequest)HttpWebRequest.Create(theUrl);  
  requestTest1.KeepAlive   =   false;  
  requestTest1.AddRange(0,65534);  
  Stream   nsTest0   =   requestTest1.GetResponse().GetResponseStream();  
  Console.WriteLine("Test   1   passed.");  
   
  //test   2  
  HttpWebRequest   requestTest2   =   (HttpWebRequest)HttpWebRequest.Create(theUrl);  
  requestTest2.KeepAlive   =   false;  
  requestTest2.AddRange(65535,2442228);  
  Stream   nsTest1   =   requestTest2.GetResponse().GetResponseStream();  
  Console.WriteLine("Test   2   passed.");  
  Console.WriteLine("Current   Connection:   "+spSite.CurrentConnections);  
   
  //test   3  
  HttpWebRequest   requestTest3   =   (HttpWebRequest)HttpWebRequest.Create(theUrl);  
  requestTest3.KeepAlive   =   false;  
  requestTest1.AddRange(2442229,4884458);  
  Stream   nsTest2   =   requestTest3.GetResponse().GetResponseStream();  
  Console.WriteLine("Test   3   passed."); 问题点数:0、回复次数:6Top

1 楼winxieddd(一剑飘香)回复于 2004-08-01 15:17:31 得分 0

upTop

2 楼kennylanse(永恒之风)回复于 2004-08-01 17:05:53 得分 0

假如用WebClient实现断点续传,在将Range加入http报头的时候应该怎样做?Top

3 楼kennylanse(永恒之风)回复于 2004-08-01 21:23:55 得分 0

到网上查了一下,好像用WebClient也会出现相同的问题。不知道该怎么解决了?难道要用直接用TCP连接?Top

4 楼kennylanse(永恒之风)回复于 2004-08-03 08:57:13 得分 0

顶啊!高手们相助啊……Top

5 楼nebulastorm(阿瞬)回复于 2004-08-16 21:28:01 得分 0

楼主的代码我试过可以通过,但是连接到本机以外的服务器会有问题,原因未知。  
  知道的说一下,顺便帮楼主顶一下。Top

6 楼bj_dragon(北京真大啊)回复于 2005-07-18 19:10:24 得分 0

dingTop

相关问题

  • 设置DBE Alias
  • IE设置?
  • outlook的设置
  • offline explore设置?
  • 如何设置?
  • VS.Net设置
  • 怎样设置?
  • 设置JSDK
  • pc anywhere 设置!~
  • 图标设置?

关键词

  • 连接
  • 修改
  • servicepointmanager
  • spsite
  • connectionlimit
  • requesttest
  • httpwebrequest
  • theurl
  • uri
  • writeline

得分解答快速导航

  • 帖主:kennylanse

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo