【发布时间】:2010-10-22 12:18:10
【问题描述】:
C# 2008
我正在使用此代码来测试互联网连接。因为我的应用程序必须登录到 Web 服务器。但是,如果用户互联网连接失败或电缆被拔出。我必须通知用户。
// Ping www.google.com to check if the user has a internet connection.
public bool PingTest()
{
Ping ping = new Ping();
PingReply pingStatus = ping.Send(IPAddress.Parse("208.69.34.231"));
if (pingStatus.Status == IPStatus.Success)
{
return true;
}
else
{
return false;
}
}
我认为我可以测试 Internet 连接的唯一方法是 ping www.google.com。因此,我使用了一个已设置为 500 毫秒的服务器计时器,在失效的事件中它将调用此 ping 函数。如果 ping 返回 false。然后我的应用将采取适当的行动。
您认为使用 google 来测试 Internet 连接是件好事吗?如果谷歌失败了,那么我的应用程序将无法运行。轮询 1/2 秒是过多还是过少?只是想知道我的整个想法是否好?
非常感谢,
【问题讨论】:
-
除此之外,请不要使用这样的 if 语句。将代码的最后 8 行更改为:“return pingStatus.Status == IPStatus.Success;”
-
很遗憾,我没有给你一个好的答案,但你可能不想每 0.5 秒 ping 一个站点,你最终可能会被阻止。
-
如果您选择任意主机,我也建议您尝试一组主机。 www.google.com、www.live.com、www.yahoo.com 等。只有在所有 3 个都失败时才通知用户。如果用户和谷歌之间的路由器出现故障,但他们仍在互联网上,您不想错误地提醒他们他们的连接已断开。
-
为什么你的逻辑不是: ConnectToMyServer() if (fail) { PingGoogle() } if (GooglePingFailed) 然后提醒用户为什么它失败了?或者代替ping,使用Http ...很常见的是所有端口都被阻止但80出。
标签: c# networking