HTTP连接问题

时间:2011-06-07 09:41:25

标签: c# http connection persistence

我有一个大问题(抱歉我的英语不好)。 我直接附上我的代码:

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;
        }
}

许多线程调用此函数并将HEAD请求发送到Tomcat服务器。 因此,此方法为我执行的每个请求打开一个连接,并且在10分钟内我有100个连接活动。

我如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您可以采取两项措施来正确管理连接:

第一

初始化

HttpWebResponse resp;
在try语句之前

然后在最终声明中关闭

finally
{ 
    if (resp != null) 
    {
        resp.Close();
    }
}

第二:

尝试使用“using()”子句管理您的连接

using(var a = new connection())
{
    //Your code
}

答案 1 :(得分:0)

Tomcat Manager显示会话,而不是活动的TCP连接。每个请求可能会启动一个新会话,但活动会话不一定表示活动的TCP连接。