C# HTTP连接有问题
我有个大问题(很抱歉我的英语不好)。 我直接附上我的代码:C# HTTP连接有问题,c#,http,connection,persistence,C#,Http,Connection,Persistence,我有个大问题(很抱歉我的英语不好)。 我直接附上我的代码: public bool isServerOnline() { Boolean ret = false; try { HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(VPMacro.MacroUploader.SERVER_URL); req.Method = "HEAD"
public bool isServerOnline()
{
Boolean ret = false;
try
{
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(VPMacro.MacroUploader.SERVER_URL);
req.Method = "HEAD";
req.KeepAlive = false;
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
if (resp.StatusCode == HttpStatusCode.OK)
{
// HTTP = 200 - Internet connection available, server online
ret = true;
}
resp.Close();
return ret;
}
catch (WebException we)
{
// Exception - connection not available
Log.e("InternetUtils - isServerOnline - " + we.Status);
return false;
}
}
此函数由许多线程调用,并向Tomcat服务器发送HEAD请求。
所以,这个方法为我执行的每个请求打开一个连接,在10分钟内我激活了100个连接
如何解决此问题?Tomcat Manager显示会话,而不是活动的TCP连接。每个请求都可能启动一个新会话,但活动会话不一定表示活动TCP连接。要正确管理连接,可以做两件事: 第一: 初始化
HttpWebResponse resp;
在try语句之前
然后在finally语句中结束
finally
{
if (resp != null)
{
resp.Close();
}
}
第二:
尝试使用“using()”子句管理您的连接
您如何测量100个带电连接?还有,为什么这是一个问题?我已经打开了Tomcat Manager,我看到了会话号。如果是这样的话,你能接受这个答案吗?请:)当然。我认为这个答案是对的。但是,你能告诉我如何解决会话问题吗?@Cecco:“问题”出在服务器上,而不是客户端。显然,Tomcat将会话保持活动状态一段时间。应该有一个配置选项,告诉它会话保持活动的时间。不过,你可能不想改变这一点。好吧,我提出一个新问题,这样就不会有任何问题了。谢谢你的帮助。
using(var a = new connection())
{
//Your code
}