概述C#执行ping命令

开发 后端
本文介绍C#执行ping命令,包括使用Process类,来创建独立的进程,做异步的处理,修改button1_click,并添加PingCompletedCallBack方法。

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事件键入

  1. privatevoidbutton1_Click(objectsender,EventArgse)  
  2. {  
  3. Pingp1=newPing();//只是演示,没有做错误处理  
  4. PingReplyreply=p1.Send(this.textBox1.Text);//阻塞方式  
  5. displayReply(reply);//显示结果  
  6. }  
  7. privatevoiddisplayReply(PingReplyreply)//显示结果  
  8. {  
  9. StringBuildersbuilder;  
  10. if(reply.Status==IPStatus.Success)  
  11. {  
  12. sbuilder=newStringBuilder();  
  13. sbuilder.Append(string.Format("Address:{0}",reply.Address.ToString()));  
  14. sbuilder.Append(string.Format("RoundTriptime:{0}",reply.RoundtripTime));  
  15. sbuilder.Append(string.Format("Timetolive:{0}",reply.Options.Ttl));  
  16. sbuilder.Append(string.Format("Don'tfragment:{0}",reply.Options.DontFragment));  
  17. sbuilder.Append(string.Format("Buffersize:{0}",reply.Buffer.Length));  
  18. listBox1.Items.Add(sbuilder.ToString());  
  19. }  

也可以做异步的处理,修改button1_click,并添加PingCompletedCallBack方法

  1. privatevoidbutton1_Click(objectsender,EventArgse)  
  2. {  
  3. Pingp1=newPing();  
  4. p1.PingCompleted+=newPingCompletedEventHandler(this.PingCompletedCallBack);  
  5. //设置PingCompleted事件处理程序  
  6. p1.SendAsync(this.textBox1.Text,null);  
  7. }  
  8. privatevoidPingCompletedCallBack(objectsender,PingCompletedEventArgse)  
  9. {  
  10. if(e.Cancelled)  
  11. {  
  12. listBox1.Items.Add("PingCanncel");  
  13. return;  
  14. }  
  15. if(e.Error!=null)  
  16. {  
  17. listBox1.Items.Add(e.Error.Message);  
  18. return;  
  19. }  
  20. StringBuildersbuilder;  
  21. PingReplyreply=e.Reply;  
  22. if(reply.Status==IPStatus.Success)  
  23. {  
  24. sbuilder=newStringBuilder();  
  25. sbuilder.Append(string.Format("Address:{0}",reply.Address.ToString()));  
  26. sbuilder.Append(string.Format("RoundTriptime:{0}",reply.RoundtripTime));  
  27. sbuilder.Append(string.Format("Timetolive:{0}",reply.Options.Ttl));  
  28. sbuilder.Append(string.Format("Don'tfragment:{0}",reply.Options.DontFragment));  
  29. sbuilder.Append(string.Format("Buffersize:{0}",reply.Buffer.Length));  
  30. listBox1.Items.Add(sbuilder.ToString());  
  31. }  

【编辑推荐】

  1. 浅析C# ArrayList
  2. C#对象初始化学习总结
  3. 使用C#正则表达式匹配相关字符串
  4. C#改写方法学习笔记
  5. 概述C#加框和消框
责任编辑:佚名 来源: IT168
相关推荐

2009-08-06 09:32:03

C#代码协同执行

2009-08-17 09:50:59

C# ping命令

2009-08-20 16:28:45

C#匿名方法

2009-09-03 10:42:16

C# Employee

2009-08-24 18:09:13

C#构造函数

2009-08-25 10:08:39

C# MyData对象

2009-08-17 09:57:00

C# Windows

2009-08-19 11:09:00

C# Cast<T>

2009-08-25 16:49:44

C#使用if语句

2009-07-31 14:08:54

C# 匿名函数

2009-08-18 17:29:02

C#使用指针

2009-08-13 15:18:23

C#文件上传

2009-08-31 09:44:23

C# Employee

2009-09-03 11:15:38

C#设置Coopera

2009-08-18 09:26:07

C#线程功能

2009-08-14 16:54:19

C# Hello Wo

2009-08-12 11:33:23

C#实现文件下载

2009-08-19 15:30:40

C#复合控件构建

2009-08-21 17:11:41

C#调用Active组

2009-09-02 16:02:52

C#引用托管对象
点赞
收藏

51CTO技术栈公众号