2009-09-19 8 views
2

ネットワークがダウンしている場合、ネットワークがダウンしている場合は、C#/ VB.netを使ってプログラムで見つけたいと思っています。ネットワークがダウンしているためにダウンしました。ネットワーク状況を確認する

希望の詳細をご希望の方は教えてください。

ルータがダウンしているかどうかをチェックしたいと思っています。ネットワークのアップまたはダウンをチェックするテクニックがたくさんありますが、ネットワーク上のどのデバイスそれは私の問題です。

答えて

0

WCFを使用する私の3層アプリケーションの中には、なぜ私がオンラインデータにアクセスできないかを確認するために多段階テストを使用しています。まず、コンピュータが隔離されている場合、我々は確認してください(Windows 2008のの発売記念イベントで、この機能を見て)

ManagementScope scope = new ManagementScope(@"\root\nap"); 
scope.Connect(); 

ObjectQuery query = new ObjectQuery("SELECT * FROM NAP_Client"); 
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query)) 
{ 
    int isolationState = 0; 
    foreach (ManagementObject m in searcher.Get()) 
    { 
     isolationState = int.Parse(m["systemIsolationState"].ToString()); 
    } 

    if (isolationState == 3) // 3 means in quarantine 
    { 
     //NAP is preventing the computer access to the network 
     ....do something 
    } 
} 

私たちは、このAPIを使用してインターネットへのアクセス権を持っているならば、我々はテストを続行:

[DllImport("wininet.dll")] 
private extern static bool InternetGetConnectedState(out ConnectedStateFlag lpdwFlags, int dwReserved); 

[Flags] 
private enum ConnectedStateFlag : int 
{ 
    Configured = 0x40, 
    LAN = 0x02, 
    RasInstalled = 0x10, 
    Modem = 0x01, 
    ModemBusy = 0x08, 
    Offline = 0x20, 
    Proxy = 0x04 
} 

次に、ソケットを開いてサーバーアドレスに接続しようとします。

次に、Webサービスのインスタンスを作成して、IISが正常に動作していてエラーが発生していないかどうかを確認します。

次に、データベースがオンラインであるかどうかを示すWebサービス上の関数を呼び出します。

+0

しかし、答えを超えるに関する私の質問は、管理された環境でアンマネージコードを使用している間、どのようにメモリリークを防ぐために、ということでしょうか? –

関連する問題