通过评估服务器应答来尝试服务器连接

本文关键字:服务器 连接 应答 评估 | 更新日期: 2023-09-27 18:09:22

我正在制作一个需要与服务器连接的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")

通过评估服务器应答来尝试服务器连接

this:

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)
    {
    }
}