.net中突破每客户端两个http连接的限制
2005-09-12 23:36
260 查看
最近写个spider,一开始使用webclient来取html页,发现即使开再多的线程也只有两个并发连接,找了好长时间资料也没找到相关的资料(没想到仔细找找msdn,丢人哪)。没奈何,只好自己来实现一个http,大部分时间花在调试http通信上,耗了差不多一个星期,效果也就是仅仅能用而已。
结果有一天灵光一闪,用“webclient 并发”(竟然一直没想到,猪啊)google了一下,找到一位高人的文章,一下子解决了大问题。
两个办法:
1。限制针对应用程序域,为每个线程使用不同的应用程序域:
AppDomain appDomain = AppDomain.CreateDomain("");
appDomain.ExecuteAssembly(@"TestClient.exe");
AppDomain.Unload(appDomain);
2。配置文件:
<system.net>
<connectionManagement>
<add address="*" maxconnection="100"/>
</connectionManagement>
</system.net>
当时气不打一处来,这么简单的东西,ms怎么不给列出来呢?!搜一下msdn,不好意思,里面明明就有,错怪了ms了。
接下来的问题是,通常情况下url里传递汉字都是会用urlencode一下变成utf-8字符串来传,可就有个别网站直接把汉字写上去。webclient呢,又自作聪明的把querystring都utf-8一下再发出去,于是就...404。还没找到办法解决,实在不行就用自己写那一段http通信代码来取了。
keep thinking, searching, googling....
结果有一天灵光一闪,用“webclient 并发”(竟然一直没想到,猪啊)google了一下,找到一位高人的文章,一下子解决了大问题。
两个办法:
1。限制针对应用程序域,为每个线程使用不同的应用程序域:
AppDomain appDomain = AppDomain.CreateDomain("");
appDomain.ExecuteAssembly(@"TestClient.exe");
AppDomain.Unload(appDomain);
2。配置文件:
<system.net>
<connectionManagement>
<add address="*" maxconnection="100"/>
</connectionManagement>
</system.net>
当时气不打一处来,这么简单的东西,ms怎么不给列出来呢?!搜一下msdn,不好意思,里面明明就有,错怪了ms了。
接下来的问题是,通常情况下url里传递汉字都是会用urlencode一下变成utf-8字符串来传,可就有个别网站直接把汉字写上去。webclient呢,又自作聪明的把querystring都utf-8一下再发出去,于是就...404。还没找到办法解决,实在不行就用自己写那一段http通信代码来取了。
keep thinking, searching, googling....
相关文章推荐
- 基于.net中突破每客户端两个http连接限制的详细介绍
- 突破IIS的客户端连接限制
- ngx_http_limit_zone_module对客户端进行连接数限制
- 突破IIS的客户端连接限制(MtaEdt22.exe)
- 让win2003突破两个人同时远程登录的限制,由于2003默认情况下远程连接只能允许两个用户同时登录,超过两人同时登录就会提示:终端服务器超出最大连接数。。
- 突破IIS的客户端连接限制
- 不要在同一客户端同时使用超过两个的 HTTP 长连接
- 客户端一个http连接包含两个方向,一个是这个http连接的输入,另一个是这个http连接的输出。
- 让win2003突破两个人同时远程登录的限制,由于2003默认情况下远程连接只能允许两个用户同时登录,超过两人同时登录就会提示:终端服务器超出最大连接数。。
- 突破IIS的客户端连接限制(MtaEdt22.exe)
- Android通过Http连接MySQL 实现登陆/注册(数据库+服务器+客户端)
- .Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类 (C# DIY HttpWebClient)
- 解决.net webservice的WebClient或HttpWebRequest首次连接缓慢问题
- Android通过Http连接MySQL 实现登陆/注册(数据库+service+客户端)【大部分转自帮客之家】
- j2ME中对Http同时请求连接的限制
- 详解利用plupload突破HTTP上传限制
- 突破防抓取限制httpclient配合htmlparser抓取网站
- server 2003远程桌面只能连接两个客户端问题的解决方法
- .Net网络编程——服务端获取客户端连接
- .net连接oracle(无客户端)