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; } }
我认为我可以测试互联网连接的唯一方法是ping www.google.com.所以我使用了一个服务器计时器,我设置了500毫秒,在已失效的事件中,它将调用此ping函数.如果ping返回false.然后我的应用将采取适当的行动.
您认为使用谷歌作为测试互联网连接的方式是一件好事.如果谷歌失败,那么我的应用程序将无法运行.轮询1/2秒是多少还是太少?只是想知道我的整个想法是否好?
非常感谢,
为何ping谷歌?您真正关心的唯一服务器是您想要与之交谈的Web服务器,对吧?所以请相反.这样,您可以通知用户他们和Web服务器之间是否有任何问题 - 这是唯一重要的事情.
如果互联网出现问题,这意味着用户只能在自己的城镇内做任何事情,您可能无法联系到谷歌,但如果您仍然可以访问您感兴趣的网络服务器,为什么要报告问题?在另一方面,如果Web服务器出现故障,但谷歌没有,为什么你会不会想告诉大家,有问题的用户?
同样,为什么要使用ping?为什么不将HTTP请求发送到Web服务器上的已知URL?毕竟,如果网络已启动,但Web服务器进程本身已关闭,那肯定与用户网络故障一样糟糕.
编辑:我没有在问题中注意到你每半秒重复一次.这真的不适合任何人.当然一分钟就足够了,不是吗?
看看这个重复的问题,它有一个不需要ping的答案:
C# - 如何检查网络连接
您可以订阅System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged事件,然后只有当它指示网络已关闭时,才会向服务器发出ping/web请求以查看它是否可用.