0

我需要一种快速的方法来检查运行 MySQL 的服务器是否从 C# mobile 启动。我尝试使用 Socket ......非常缓慢!...而 C# 移动设备中不存在 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 !!!");
}

有没有人有什么建议 ???

4

3 回答 3

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 !!!");
}

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

于 2012-07-26T10:51:27.860 回答
0

服务器可能还活着并且很健康,但是您的“健康检查”可能会超时,导致您认为它已经死了;另一方面,您可能会发现您的服务器非常健康并且您继续查询,这反过来又超时(情况并没有那么不同)。

我建议您假设服务器处于活动状态假设每个查询都可以并且将会超时,从而适当地处理各种条件。

于 2012-07-26T11:00:47.043 回答
0

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

于 2012-07-26T10:45:15.633 回答