程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 使用C#調用外部Ping命令獲取網絡連接情況(2)

使用C#調用外部Ping命令獲取網絡連接情況(2)

編輯:關於C語言

從輸出流獲取命令執行結果,

string strRst = p.StandardOutput.ReadToEnd( );

在本機測試得到如下結果:

"Microsoft Windows 2000 [Version 5.00.2195]\r\n(C) 版權所有 1985-2000 Microsoft Corp.\r\n\r\nD:\\himuraz\\csharpproject\\ZZ\\ConsoleTest\\bin\\Debug>ping -n 1 192.192.132.231\r\n\r\r\nPinging 192.192.132.231 with 32 bytes of data:\r\r\n\r\r\nReply from 192.192.132.231: bytes=32 time<10ms TTL=128\r\r\n\r\r\nPing statistics for 192.192.132.231:\r\r\n Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),\r\r\nApproximate round trip times in milli-seconds:\r\r\n Minimum = 0ms, Maximum = 0ms, Average = 0ms\r\r\n\r\nD:\\himuraz\\csharpproject\\ZZ\\ConsoleTest\\bin\\Debug>exit\r\n"

有了輸出結果,那還有什麼好說的,分析strRst字符串就可以知道網絡的連接情況了.

下面是一個完整的程序,當然對Ping.exe程序執行的結果不全,讀者可以進一步修改

完整代碼如下:

using System;
using System.Diagnostics;
namespace ZZ
{
  class ZZConsole
  {
    [STAThread]
    static void Main( string[] args )
    {
      string ip = "192.192.132.229";
      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 1 "+strIp );
      p.StandardInput.WriteLine( "exit" );
      string strRst = p.StandardOutput.ReadToEnd( );
      if( strRst.IndexOf( "( 0% loss )" )!=-1 )
      pingrst = "連接";
      else if(strRst.IndexOf( "Destination host unreachable." )!=-1 )
      pingrst = "無法到達目的主機";
      else if( strRst.IndexOf( "Request timed out." )!=-1 )
      pingrst = "超時";
      else if( strRst.IndexOf( "Unknown host" )!=-1 )
      pingrst = "無法解析主機";
      else
      pingrst = strRst;
      p.Close( );
      return pingrst;
    }
  }
}

總結,這裡就是為了說明一個問題,不但是Ping命令,只要是命令行程序或者是DOS內部命令,我們都可以用上面的方式來執行它,並獲取相應的結果,並且這些程序的執行過程不會顯示出來,如果需要調用外部程序就可以嵌入到其中使用了.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved