方法一:調用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("失敗"); }
新聞熱點
疑難解答