通过评估服务器应答来尝试服务器连接
本文关键字:服务器 连接 应答 评估 | 更新日期: 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)
{
}
}