当前位置:  开发笔记 > 编程语言 > 正文

C#测试活动的互联网连接.Ping google.com

如何解决《C#测试活动的互联网连接.Pinggoogle.com》经验,为你挑选了2个好方法。

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秒是多少还是太少?只是想知道我的整个想法是否好?

非常感谢,



1> Jon Skeet..:

为何ping谷歌?您真正关心的唯一服务器是您想要与之交谈的Web服务器,对吧?所以请相反.这样,您可以通知用户他们和Web服务器之间是否有任何问题 - 这是唯一重要的事情.

如果互联网出现问题,这意味着用户只能在自己的城镇内做任何事情,您可能无法联系到谷歌,但如果您仍然可以访问您感兴趣的网络服务器,为什么要报告问题?在另一方面,如果Web服务器出现故障,但谷歌没有,为什么你会不会想告诉大家,有问题的用户?

同样,为什么要使用ping?为什么不将HTTP请求发送到Web服务器上的已知URL?毕竟,如果网络已启动,但Web服务器进程本身已关闭,那肯定与用户网络故障一样糟糕.

编辑:我没有在问题中注意到你每半秒重复一次.这真的不适合任何人.当然一分钟就足够了,不是吗?


也许如果对服务器的ping失败,请ping Google.这样他可以判断用户是否在网上,但服务器已关闭.

2> Paul Alexand..:

看看这个重复的问题,它有一个不需要ping的答案:

C# - 如何检查网络连接

您可以订阅System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged事件,然后只有当它指示网络已关闭时,才会向服务器发出ping/web请求以查看它是否可用.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有