【问题标题】:Best Way to detect if internet is working [duplicate]检测互联网是否正常工作的最佳方法[重复]
【发布时间】:2013-04-10 18:31:21
【问题描述】:

我想知道识别互联网是否正常工作的最佳方法。我正在考虑 Ping,但可能目标已关闭,这将使我的应用程序认为互联网已关闭。

所以如果有人有任何想法,很高兴分享。

【问题讨论】:

  • Ping 一个非常可靠的主机(即:Google)可能是一个不错的选择。
  • 如果我要 ping 某些东西,我会通过 IP:8.8.8.8 或 8.8.4.4 ping Google 的 DNS 服务器
  • @ChrisCooney 不一定 - 许多办公环境会阻止传出 ICMP。
  • 您还应该通过 IP 地址执行此操作,以确保出现故障的是 Internet,而不是您当前的 DNS 解析器。请注意,您可以 ping 谷歌的开放 DNS 解析器:developers.google.com/speed/public-dns/docs/using
  • 最好的选择可能是向非常可靠的主机发出 HTTP 请求,例如 Google

标签: c#


【解决方案1】:

与其选择要 ping 的主机或 DNS,不如尝试 ping 您打算与之交互的 Web 资源。或者,不是 ping,而是实际尝试与该端点交互,并为无法访问该主机的情况做好充分准备。

I.E. twitter 客户端可能会尝试连接到 twitter.com,如果无法连接(无论他们没有互联网连接还是 twitter.com 被阻止),程序可能会报告“Twitter 当前无法访问”。

【讨论】:

    【解决方案2】:

    Ping 一个正常工作的 DNS,例如 4.2.2.4,4.2.2.3,4.2.2.2, 8.8.8.8, 8.8.4.4

    Ping myPing = new Ping();
    String host = "4.2.2.4;
    byte[] buffer = new byte[32];
    int timeout = 1000;
    PingOptions pingOptions = new PingOptions();
    PingReply reply = myPing.Send(host, timeout, buffer, pingOptions);
    if (reply.Status == IPStatus.Success) {
      // presumably online
    }
    

    【讨论】:

    • 什么都没有。
    猜你喜欢
    • 1970-01-01
    • 2014-03-29
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    相关资源
    最近更新 更多