概述C#執行ping命令
C#執行ping命令
首先,我們用使用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();
C#執行ping命令,輸入要執行ping命令,這里就是ping了,
p.StandardInput.WriteLine("ping -n 1 www.iwebtrados.com.cn");
p.StandardInput.WriteLine("exit");
從輸出流獲取命令執行結果,string strRst = p.StandardOutput.ReadToEnd();
利用C#執行ping命令
這里我寫的是一個窗體程序。首先添加textbox,listbox,button控件,其中textbox錄入域名或IP,listbox顯示結果.
在button1_click事件鍵入
- privatevoidbutton1_Click(objectsender,EventArgse)
- {
- Pingp1=newPing();//只是演示,沒有做錯誤處理
- PingReplyreply=p1.Send(this.textBox1.Text);//阻塞方式
- displayReply(reply);//顯示結果
- }
- privatevoiddisplayReply(PingReplyreply)//顯示結果
- {
- StringBuildersbuilder;
- if(reply.Status==IPStatus.Success)
- {
- sbuilder=newStringBuilder();
- sbuilder.Append(string.Format("Address:{0}",reply.Address.ToString()));
- sbuilder.Append(string.Format("RoundTriptime:{0}",reply.RoundtripTime));
- sbuilder.Append(string.Format("Timetolive:{0}",reply.Options.Ttl));
- sbuilder.Append(string.Format("Don'tfragment:{0}",reply.Options.DontFragment));
- sbuilder.Append(string.Format("Buffersize:{0}",reply.Buffer.Length));
- listBox1.Items.Add(sbuilder.ToString());
- }
- }
也可以做異步的處理,修改button1_click,并添加PingCompletedCallBack方法
- privatevoidbutton1_Click(objectsender,EventArgse)
- {
- Pingp1=newPing();
- p1.PingCompleted+=newPingCompletedEventHandler(this.PingCompletedCallBack);
- //設置PingCompleted事件處理程序
- p1.SendAsync(this.textBox1.Text,null);
- }
- privatevoidPingCompletedCallBack(objectsender,PingCompletedEventArgse)
- {
- if(e.Cancelled)
- {
- listBox1.Items.Add("PingCanncel");
- return;
- }
- if(e.Error!=null)
- {
- listBox1.Items.Add(e.Error.Message);
- return;
- }
- StringBuildersbuilder;
- PingReplyreply=e.Reply;
- if(reply.Status==IPStatus.Success)
- {
- sbuilder=newStringBuilder();
- sbuilder.Append(string.Format("Address:{0}",reply.Address.ToString()));
- sbuilder.Append(string.Format("RoundTriptime:{0}",reply.RoundtripTime));
- sbuilder.Append(string.Format("Timetolive:{0}",reply.Options.Ttl));
- sbuilder.Append(string.Format("Don'tfragment:{0}",reply.Options.DontFragment));
- sbuilder.Append(string.Format("Buffersize:{0}",reply.Buffer.Length));
- listBox1.Items.Add(sbuilder.ToString());
- }
- }
【編輯推薦】