关于网络连接状态的编程

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

1. 可以用WMI (Win2K & XP):

(首先要在VS.NET中创建一个项目,然后在添加引用中引用一个.net的装配件:System.Management.dll,这样你的项目才能使用WMI)

with Windows 2000 & XP, UNDOCUMENTED:

MSNdis_MediaConnectStatus - NdisMediaConnectStatus :

(0 = connected?, 1 = not connected?)

with Windows XP:

Win32_NetworkAdapter - NetConnectionStatus :

using System.Management;

static void ReportConnection2000()

{

ManagementClass mc = new ManagementClass( @"root\WMI", @"MSNdis_MediaConnectStatus", null );

ManagementObjectCollection moc = mc.GetInstances();

foreach( ManagementObject mo in moc )

{

string name = (string) mo["InstanceName"];

bool active = (bool) mo["Active"];

uint status = (uint) mo["NdisMediaConnectStatus"];

Console.WriteLine( " {0}\n\tActive:{1} Media Status:{2}", name, active, status );

}

}

static void ReportConnectionXP()

{

ManagementClass mc = new ManagementClass( @"Win32_NetworkAdapter" );

ManagementObjectCollection moc = mc.GetInstances();

foreach( ManagementObject mo in moc )

{

string name = (string) mo["Name"];

object val = mo["NetConnectionStatus"];

if( val != null )

Console.WriteLine( " {0}\n\tConnection Status:{1}", name, (ushort) val );

else

Console.WriteLine( " {0}\n", name );

}

}

如果返回0则表示连接;

如果返回1则表示没连接;

上面得到的是本地的连接状态;

==========================================================

利用ping来得取:

Process p = new Process();

p.StartInfo .WorkingDirectory ="c:\\";

p.StartInfo.FileName = "ping.exe";

p.StartInfo.Arguments="192.168.52.31";

p.StartInfo.UseShellExecute = false;

p.StartInfo.RedirectStandardOutput = true;

p.StartInfo.CreateNoWindow = true;

p.Start ();

string output = p.StandardOutput.ReadToEnd();

p.WaitForExit ();

MessageBox.Show(output);//得到ping的输出值

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航