我希望写一个Windows应用程序,它做一些事情,当我成为从互联网上断开。我想编写一个非常简单的C#/ Delphi应用程序只是每20秒民意调查,看看哪些,如果我仍然连接的。

如果我要查询我真的很想比试图从网上下载一个网页,其他的解决方案。我不能假设下载尝试失败的意思是“不在线”,因为可能还有其他的应用吃了互联网带宽。另外,我敢肯定,经常连接/从一个特定的网站下载是会得到我的IP封锁。

我敢肯定有一个办法告诉您是否在线,无需下载/连接到远程服务器,但我不知道怎么样。

有帮助吗?

解决方案

要注意的是连接到互联网并没有真正意味着什么:如果你正在连接到ISP,但骨干已关闭,或者你要访问的网站是在去了网格状最近的国家?具有连接并不意味着你可以做你想做的。结果 无论如何,前面所说,你可以使用InternetGetConnectedState API来测试你是否有一个有效的网络连接配置。点击 作为一个例子,下面的程序告诉我正确我有一个LAN连接,但未能发现我有我的ZoneAlarm防火墙设置为阻止“所有的互联网活动”,这意味着你实际上已丢失所有的互联网连接。

的Delphi例程:

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;

其他提示

调用 InternetGetConnectedState 功能。这知识库文章解释如何做到这一点。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top