【问题标题】:How to tell if connected to internet如何判断是否连接到互联网
【发布时间】:2009-01-26 06:08:10
【问题描述】:

我希望编写一个 Windows 应用程序,当我与互联网断开连接时,它会做一些事情。我正在考虑编写一个非常简单的 C#/Delphi 应用程序,它只是每 20 秒轮询一次以查看我是否仍然连接。

如果我必须进行投票,我真的很想要一个解决方案,而不是尝试从网上下载网页。我不能假设下载尝试失败意味着“不在线”,因为可能有其他应用程序占用了互联网带宽。另外,我确信不断从特定站点连接/下载会导致我的 IP 被阻止。

我确定有一种方法无需下载/连接到远程服务器即可判断您是否在线,但我不确定如何。

【问题讨论】:

    标签: c# delphi delphi-7


    【解决方案1】:

    请注意,连接到 Internet 并没有任何实际意义:如果您连接到 ISP,但主干网出现故障,或者您要访问的所有网站都位于最近关闭电网的国家/地区,该怎么办?建立联系并不意味着您可以为所欲为。
    无论如何,如前所述,您可以使用InternetGetConnectedState API 来测试您是否配置了有效的 Internet 连接。
    例如,以下例程正确地告诉我我有一个 LAN 连接,但未能检测到我的 ZoneAlarm 防火墙设置为阻止“所有 Internet 活动”,这意味着您实际上失去了所有 Internet 连接。

    德尔福例程:

    procedure IsConnected;
    var
      dwFlags: DWORD;
    begin
      if InternetGetConnectedState(@dwFlags, 0) then
      begin
        if (dwFlags and INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM  then
          ShowMessage('Modem Connection')
        else
        if (dwFlags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then
          ShowMessage('LAN Connection')
        else
        if (dwFlags and INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY then
          ShowMessage('Connection thru Proxy')
        else
        if (dwFlags and INTERNET_CONNECTION_OFFLINE) = INTERNET_CONNECTION_OFFLINE then
          ShowMessage('Local system in offline mode')
        else
        if (dwFlags and INTERNET_CONNECTION_CONFIGURED) = INTERNET_CONNECTION_CONFIGURED then
          ShowMessage('Valid connection exists, but might or might not be connected')
      end
      else
        ShowMessage('Not Connected. Try to connect and risk of being prompted to dial into another Internet Service Provider.');
    end;
    

    【讨论】:

    • 哇,当我看到这个答案得到了多少支持时,我做了一个双重考虑。我不确定这是否适用于我的情况。基本上我的路由器一直断开连接,如果断开连接,我想使用 X10 命令将其关闭并重新打开。
    【解决方案2】:

    调用InternetGetConnectedState 函数。这个knowledgebase article 解释了如何做到这一点。

    【讨论】:

      【解决方案3】:

      看起来可以使用这里描述的方法来完成:http://www.csharphelp.com/archives3/archive499.html

      【讨论】:

        猜你喜欢
        • 2011-04-24
        • 1970-01-01
        • 2015-05-25
        • 2023-03-19
        • 2011-10-23
        • 1970-01-01
        • 2010-11-19
        • 1970-01-01
        • 2019-09-03
        相关资源
        最近更新 更多