gpt4 book ai didi

tcp - HttpWebRequest - 重用 TCP 连接

转载 作者:可可西里 更新时间:2023-11-01 02:49:35 24 4
gpt4 key购买 nike

我正在按照您的预期方式使用 HttpWebRequest:在我完成响应后处理响应,希望这将使它重用任何可用的 TCP 连接,但它没有:它关闭收到响应后的连接。我在使用 TCPView 时看到了这种情况。

这是我的 HttpWebRequest 代码:

 private HttpWebResponse ExecuteRequest(String baseRelativeUri, String method, Ds postValues) {

/////////////////////////////////////////
// Set-up

Uri uri = new Uri( _baseUri, baseRelativeUri );

_cookies.ProcessDomains();

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create( uri );
request.CookieContainer = _cookies;
request.Method = method;
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0";

if( postValues != null ) SetPostContent( request, postValues );

/////////////////////////////////////////
// Response

return (HttpWebResponse)request.GetResponse();
}

protected HtmlDocument ExecuteRequestHtml(String baseRelativeUri, String method, Ds postValues, HttpStatusCode expectedStatusCode) {

using(HttpWebResponse response = ExecuteRequest(baseRelativeUri, method, postValues)) {

if( response.StatusCode != expectedStatusCode ) throw new WebException("Did not receive " + expectedStatusCode + " response.");

/////////////////////////////////////////
// HtmlDocument

using(Stream stream = response.GetResponseStream()) {

HtmlDocument doc = new HtmlDocument();
doc.Load( stream );
return doc;
}
}
}

根据 MSDN,HttpWebRequest.KeepAlive 属性默认为 true,HttpWebRequest.Pipelines 也是如此。那我做错了什么?

谢谢!

最佳答案

事实证明,我正在达到 HttpWebRequest 遵守的“每个主机 2 个同时连接”规则。

解决方案是设置这个静态属性:

System.Net.ServicePointManager.DefaultConnectionLimit = 15;

已排序:)

关于tcp - HttpWebRequest - 重用 TCP 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10777658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com