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

如何判断是否连接到互联网

如何解决《如何判断是否连接到互联网》经验,为你挑选了1个好方法。

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

如果我不得不进行民意调查,除了尝试从网上下载网页之外,我真的很喜欢其他解决方案.我不能假设下载尝试失败意味着"不在线",因为可能有其他应用程序占用互联网带宽.此外,我确信不断从特定网站连接/下载将阻止我的IP.

我确定有一种方法可以判断你是否在线而没有下载/连接到远程服务器,但我不确定如何.



1> François..:

请注意,连接到互联网并不意味着什么:如果您连接到您的ISP,但主干网已关闭,或者您想要访问的所有网站都在最近离开网格的国家/地区,该怎么办?建立联系并不意味着你可以做你想做的事.
无论如何,如前所述,您可以使用InternetGetConnectedStateAPI来测试您是否配置了有效的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;

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