C#使用ping命令的两个例子
方法一:调用cmd的ping命令
privatestaticstringCmdPing(stringstrIp) { Processp=newProcess();p.StartInfo.FileName="cmd.exe";//设定程序名 p.StartInfo.UseShellExecute=false;//关闭Shell的使用 p.StartInfo.RedirectStandardInput=true;//重定向标准输入 p.StartInfo.RedirectStandardOutput=true;//重定向标准输出 p.StartInfo.RedirectStandardError=true;//重定向错误输出 p.StartInfo.CreateNoWindow=true;//设置不显示窗口 stringpingrst;p.Start();p.StandardInput.WriteLine("ping"+strIp); p.StandardInput.WriteLine("exit"); stringstrRst=p.StandardOutput.ReadToEnd(); if(strRst.IndexOf("(0%loss)")!=-1) { pingrst="连接"; } elseif(strRst.IndexOf("Destinationhostunreachable.")!=-1) { pingrst="无法到达目的主机"; } elseif(strRst.IndexOf("Requesttimedout.")!=-1) { pingrst="超时"; } elseif(strRst.IndexOf("Unknownhost")!=-1) { pingrst="无法解析主机"; } else { pingrst=strRst; } p.Close(); returnpingrst; }
方法二:使用C#中的ping类
privatevoiddisplayReply(PingReplyreply)//显示结果 { Pingp1=newPing();//只是演示,没有做错误处理 PingReplyreply=p1.Send("填写ip地址"); 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)); response.write(sbuilder.ToString()); } elseif(reply.Status==IPStatus.TimeOut) { response.write("超时"); }else{ response.write("失败"); }