在连接到我的数据库之前,如何从C#MOBILE检查MySQL服务器是否处于活动状态

时间:2012-07-26 10:41:25

标签: c# mysql

我需要一种快速方法来检查运行MySQL的服务器是否是从C#mobile启动的。 我尝试使用Socket ......非常慢! ...并且C#mobile中不存在Ping类

IPHostEntry myHostEntry = Dns.GetHostEntry("192.168.2.222");
IPEndPoint host = new IPEndPoint(myHostEntry.AddressList[0], 3306);

Socket s = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
s.Connect(host);
if (s.Connected) { 
      MessageBox.Show("Ping Ok!!!"); 
} else {
       MessageBox.Show("Ping not Ok !!!");
}

有没有人有任何建议???

3 个答案:

答案 0 :(得分:0)

如果您可以在MySQL所在的服务器上托管某种脚本,那么编写一个连接到本地MySQL的简单脚本,并在成功时打印1,在失败时打印0。使用来自C#mobile的HTTP查询脚本。这将是最可靠的解决方案。

答案 1 :(得分:0)

调整超时并删除dns-resolve。

IPEndPoint host = new IPEndPoint(IPAddress.Parse("192.168.2.222"), 3306);

Socket s = new Socket(AddressFamily.InterNetwork,
s.ReceiveTimeout = 100;
s.SendTimeout = 100;
SocketType.Stream, ProtocolType.Tcp);
s.Connect(host);
if (s.Connected) { 
      MessageBox.Show("Ping Ok!!!"); 
} else {
       MessageBox.Show("Ping not Ok !!!");
}

但这在高延迟环境(移动网络)中可能不可靠

答案 2 :(得分:0)

服务器可能活着且健康,但您的“健康检查”可能会超时,导致您认为它已经死亡;另一方面,您可能会发现您的服务器非常健康,您可以继续查询,然后超时(情况并非如此)。

我建议您假设服务器处于活动状态 AND 假设每个查询都能超时,并适当处理各种条件。