Проблема с HTTP-соединениями - PullRequest
2 голосов
/ 07 июня 2011

У меня большая проблема (извините за мой плохой английский). Я прилагаю непосредственно мой код:

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 ]

1 голос
/ 07 июня 2011

2 вещи, которые вы могли бы сделать для правильного управления соединением:

first:

initialize

HttpWebResponse resp;

перед оператором try.

Затемclose в операторе finally

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

секунда:

Попробуйте управлять своими соединениями с помощью выражения "using ()"

using(var a = new connection())
{
    //Your code
}
0 голосов
/ 07 июня 2011

Tomcat Manager показывает сеансы, а не активные соединения TCP. Каждый запрос может начинать новый сеанс, но активный сеанс не обязательно указывает на активное TCP-соединение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...