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("失败");
}