3

インターネットから切断されたときに何かを行う Windows アプリを作成したいと考えています。私は、20 秒ごとにポーリングしてまだ接続されているかどうかを確認する、非常に単純な C#/Delphi アプリを作成することを考えていました。

ポーリングする必要がある場合は、ネットから Web ページをダウンロードする以外の解決策が本当に必要です。他のアプリがインターネット帯域幅を消費している可能性があるため、ダウンロードの失敗が「オンラインではない」ことを意味するとは思いません. さらに、特定のサイトから常に接続/ダウンロードすると、IPがブロックされると確信しています.

リモートサーバーをダウンロード/接続せずにオンラインであるかどうかを確認する方法があると確信していますが、その方法はわかりません.

4

3 に答える 3

10

インターネットに接続しても、実際には何の意味もないことに注意してください。ISPに接続しているが、バックボーンがダウンしている場合、またはアクセスしたいすべてのサイトが最近のようにグリッドから外れた国にある場合はどうでしょうか。接続があるからといって、やりたいことができるわけではありません。
とにかく、前に述べたように、InternetGetConnectedStateAPIを使用して、有効なインターネット接続が構成されていることをテストできます。
例として、次のルーチンは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;
于 2009-01-26T06:50:58.340 に答える
3

関数を呼び出しInternetGetConnectedStateます。このナレッジベースの記事では、その方法について説明しています。

于 2009-01-26T06:12:53.143 に答える
2

ここで説明されている方法を使用して実行できるようです: http://www.csharphelp.com/archives3/archive499.html

于 2009-01-26T06:12:48.887 に答える