检查网络状态

时间:2009-09-19 01:20:55

标签: c# .net

我想检查网络状态,如果网络已关闭,我的意思是如果我的网络关闭,那么我想通过编程方式使用C#/ VB.net找出,找出哪个路由器或服务器等因为网络也在瘫痪,

希望我已经解释了我的问题,如果你想要更多解释请告诉我。

我想检查网络连接中是否存在路由器故障或其他一些问题,因为有很多技术可以检查网络的上行或下行,但是由于网络中的哪个设备网络工作不正常那是我的问题。

3 个答案:

答案 0 :(得分:1)

你可以pinvoke InternetGetConnectedState()。传递0表示标志,如果返回true,则表示存在活动的互联网连接。

答案 1 :(得分:1)

答案 2 :(得分:0)

对于我使用WCF的三层应用程序,我使用多步测试来检查无法访问在线数据的原因。

首先,我们检查计算机是否已被隔离(在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服务上调用一个函数,告诉我数据库是否在线。