通过评估服务器回复尝试服务器连接

时间:2011-09-21 18:29:38

标签: c#

我在C#中创建一个需要与服务器建立连接的程序。 我正在使用冗余构建它以消除服务器故障。 因此,我有一个服务器地址的文本文件,如下所示:

2011-09-21 18:01
http://server1.server.com
http://server2.server.com
http://server3.server.com

日期是为了确保程序有一个新的服务器列表。 它启动时所做的第一件事就是下载此列表并比较日期。 如果下载的文件具有较新的日期,则会替换旧文件。

我现在要发生的事情是,我希望程序读取文件并制作可能的服务器列表(这已经完成),然后遍历列表以查找给出的服务器回复服务器期待。

收到回复后,应该停止检查并将变量“server”设置为刚刚正确响应的服务器。

我一直在尝试以下程序,没有任何运气:

int srvs = servers.Count();
int i = 0;
string response = string.Empty;
while (i < srvs)
{
    var client = new WebClient();
    try
    {
        response = client.DownloadString(servers[i] + "testcon.php");
    }
    catch (WebException wex)
    {
    }
    finally
    {
        if (response == "OK")
        {
            server = servers[i];
        }
    }
    if (servers.Contains(server))
        break;
    i++;
}

这不起作用,直到它在列表的末尾才停止循环。 我试过的下一件事是:

var client = new WebClient();
foreach (string s in servers)
{
    try
    {
        response = client.DownloadString(s + "testcon.php");
    }
    catch (WebException wex)
    {
    }
    finally
    {
    if (response == "OK")
        server = s;
    }
        break;
    }

如何停止并将服务器设置为按预期响应的第一台服务器(目前使用“OK”)。

1 个答案:

答案 0 :(得分:1)

这个:

int srvs = servers.Count();
int i = 0;
string response = string.Empty;
while (i < srvs)
{
    var client = new WebClient();
    try
    {
        response = client.DownloadString(servers[i] + "testcon.php");
        if (response == "OK")
        {
            server = servers[i];.
            break;
        }
    }
    catch (WebException wex)
    {
    }
    i++;
}

或者这个:

var client = new WebClient();
foreach (string s in servers)
{
    try
    {
        response = client.DownloadString(s + "testcon.php");
        if (response == "OK")
        {
            server = s;
            break;
        }
    }
    catch (WebException wex)
    {
    }
}