知识大全 C#调外部Ping命令获取网络连接情况

Posted 命令

篇首语:如果这世界上真有奇迹,那只是努力的另一个名字。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 C#调外部Ping命令获取网络连接情况相关的知识,希望对你有一定的参考价值。

C#调外部Ping命令获取网络连接情况  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  以前在玩Windows 的时候 几台电脑连起来 需要测试网络连接是否正常 经常用的一个命令就是Ping exe 感觉相当实用

  现在为我们提供了强大的功能来调用外部工具 并通过重定向输入 输出获取执行结果 下面就用一个例子来说明调用Ping exe命令实现网络的检测 希望初学者有所帮助

  首先 我们用使用Process类 来创建独立的进程 导入System Diagnostics

  

  using System Diagnostics

  实例一个Process类 启动一个独立进程

  

  Process p = new Process()

  Process类有一个StartInfo属性 这个是ProcessStartInfo类 包括了一些属性和方法 下面我们用到了他的几个属性

  设定程序名

  

  p StartInfo FileName = cmd exe

  关闭Shell的使用

  

  p StartInfo UseShellExecute = false

  重定向标准输入

  

  p StartInfo RedirectStandardInput = true

  重定向标准输出

  

  p StartInfo RedirectStandardOutput = true

  重定向错误输出

  

  p StartInfo RedirectStandardError = true

  设置不显示窗口

  

  p StartInfo CreateNoWindow = true

  上面几个属性的设置是比较关键的一步

  既然都设置好了那就启动进程吧!

  

  p Start()

  输入要执行的命令 这里就是ping了

  

  p StandardInput WriteLine( ping n ) p StandardInput WriteLine( exit )

  从输出流获取命令执行结果

  

  string strRst = p StandardOutput ReadToEnd()

  在本机测试得到如下结果

  

  

   Microsoft Windows [Version ]\\r\\n(C)

  版权所有 Microsoft Corp \\r\\n\\r\\nD

  \\\\himuraz\\\\csharpproject\\\\ZZ\\\\ConsoleTest\\\\bin\\\\

  Debug>ping n \\r\\n\\r\\r\\nPinging

   with bytes of data

  \\r\\r\\n\\r\\r\\nReply from bytes= time< ms

  TTL= \\r\\r\\n\\r\\r\\nPing statistics

  for \\r\\r\\n Packets Sent =

  Received = Lost = ( % loss)

  \\r\\r\\nApproximate round trip times in milli seconds \\r\\r\\n

  Minimum = ms Maximum = ms

  Average = ms\\r\\r\\n\\r\\nD

  \\\\himuraz\\\\csharpproject\\\\ZZ\\\\ConsoleTest\\\\bin\\\\Debug>exit\\r\\n

  有了输出结果 那还有什么好说的 分析strRst字符串就可以知道网络的连接情况了  下面是一个完整的程序 当然对Ping exe程序执行的结果不全 读者可以进一步修改  完整代码如下

  

  

  using System;using System Diagnostics;namespace ZZclass ZZConsole[STAThread]static void Main(string[] args)string ip = ;string strRst = CmdPing(ip);Console WriteLine(strRst);Console ReadLine();private static string CmdPing(string strIp)Process p = new Process();p StartInfo FileName = cmd exe ;p StartInfo UseShellExecute = false;p StartInfo RedirectStandardInput = true;p StartInfo RedirectStandardOutput = true;p StartInfo RedirectStandardError = true;p StartInfo CreateNoWindow = true;string pingrst;p Start();p StandardInput WriteLine( ping n +strIp);p StandardInput WriteLine( exit );string strRst = p StandardOutput ReadToEnd();if(strRst IndexOf( ( % loss) )!= )pingrst = 连接 ;else if( strRst IndexOf( Destination host unreachable )!= )pingrst = 无法到达目的主机 ;else if(strRst IndexOf( Request timed out )!= )pingrst = 超时 ;else if(strRst IndexOf( Unknown host )!= )pingrst = 无法解析主机 ;elsepingrst = strRst;p Close();return pingrst;

总结 这里就是为了说明一个问题 不但是Ping命令 只要是命令行程序或者是Dos内部命令 我们都可以用上面的方式来执行它 并获取相应的结果 并且这些程序的执行过程不会显示出来 如果需要调用外部程序就可以嵌入到其中使用了 cha138/Article/program/net/201311/12356

相关参考