我在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”)。
答案 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)
{
}
}