首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用HttpWebRequest类获取真正多响应

如何使用HttpWebRequest类获取真正多响应
EN

Stack Overflow用户
提问于 2013-02-07 01:24:51
回答 1查看 164关注 0票数 0

我对HttpWebRequest类有一些逻辑问题。

我使用System.Net命名空间中的HttpWebRequest类,当我这样做的时候:

代码语言:javascript
复制
while(true)
{
    HttpWebRequest request = WebRequest.Create("http://somesite.com/") as HttpWebRequest;
    HttpWebResponse responce = request.GetResponse() as HttpWebResponse;
}

我收到了一个接一个的响应,间隔超过一秒,但我认为我的互联网连接可以更快地工作,因为收到的数据非常小。然后我尝试这样做:

代码语言:javascript
复制
while(true)
{
    HttpWebRequest request = WebRequest.Create("http://google.com/") as HttpWebRequest;
    HttpWebResponse response = request.BeginGetResponse(EndReceive, obj);
}

internal void EndReceive(IAsyncResult ar)
{
    obj.Response = obj.Request.EndGetResponse(ar) as HttpWebResponse;
}

我得到了非常小的速度提升,大约10-30%,但我使用异步请求,我发送到服务器5的请求,而不是一个,为什么速度没有提高超过100%?如果服务器不能同时处理来自一个ip的多个请求,这是可以接受的…但当我用代码运行10控制台应用程序时:

代码语言:javascript
复制
void SendRequest()
{
    HttpWebRequest request = WebRequest.Create("http://google.com/") as HttpWebRequest;
    HttpWebResponse responce = request.BeginGetResponse(EndReceive, obj);
}

void EndReceive(IAsyncResult ar)
{
    obj.Response = obj.Request.EndGetResponse(ar) as HttpWebResponse;
}

我的速度提高了4-8倍,HttpWebRequest类有问题吗?为什么我不能在一个应用程序上获得如此快的速度,但却有许多异步请求?

EN

回答 1

Stack Overflow用户

发布于 2013-02-07 01:29:05

我强烈怀疑您基本上受到内置连接池的限制,它将限制单个进程(或者可能是AppDomain)向给定主机发出的请求数量。如果您希望更改可以向单个主机发出的并发请求的数量,请使用app.config中的元素。

另外,在使用响应时应该有一条using语句,否则就不能正确地处理它……这可能会导致连接池本身出现可怕的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14735100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档