我想检查网络状态,如果网络已关闭,我的意思是如果我的网络关闭,那么我想通过编程方式使用C#/ VB.net找出,找出哪个路由器或服务器等因为网络也在瘫痪,
希望我已经解释了我的问题,如果你想要更多解释请告诉我。
我想检查网络连接中是否存在路由器故障或其他一些问题,因为有很多技术可以检查网络的上行或下行,但是由于网络中的哪个设备网络工作不正常那是我的问题。
答案 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服务上调用一个函数,告诉我数据库是否在线。