方法一:调用cmd 的ping命令
private static string CmdPing(string strIp) { Process p = new Process(); 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;//设置不显示窗口 string pingrst; p.Start(); p.StandardInput.WriteLine("ping " + 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; }
方法二:使用C#中的ping 类
private void displayReply(PingReply reply) //显示结果 { Ping p1 = new Ping(); //只是演示,没有做错误处理 PingReply reply = p1.Send("填写ip地址"); StringBuilder sbuilder ; if (reply.Status == IPStatus.Success) { sbuilder = new StringBuilder(); sbuilder.Append(string.Format("Address: {0} ", reply.Address.ToString ())); sbuilder.Append(string.Format("RoundTrip time: {0} ", reply.RoundtripTime)); sbuilder.Append(string.Format("Time to live: {0} ", reply.Options.Ttl)); sbuilder.Append(string.Format("Don't fragment: {0} ", reply.Options.DontFragment)); sbuilder.Append(string.Format("Buffer size: {0} ", reply.Buffer.Length)); response.write(sbuilder.ToString()); } else if (reply.Status == IPStatus.TimeOut) { response.write("超时"); }else{ response.write("失败"); }