WPF ping测试网络状态
public PingReply PingTest(string ip) { PingReply reply = null; Ping pingSender = null; try { pingSender = new Ping(); PingOptions options = new PingOptions(); options.DontFragment = true; string data = "hello world"; byte[] buffer = Encoding.ASCII.GetBytes(data); int timeout = 1000; IPAddress ipa = IPAddress.Parse(ip); PingReply replyPing = pingSender.Send(ip, timeout, buffer, options); reply = replyPing; } catch (Exception ex) { reply = null; } finally { pingSender.Dispose(); } return reply; } public String GetIPGlobal() { //得到本机Internet协议IPV4的统计数据; IPGlobalProperties properties = IPGlobalProperties.GetIPGlobalProperties(); IPGlobalStatistics ipstat = properties.GetIPv4GlobalStatistics(); Console.WriteLine(" Inbound Packet Data:"); //获取收到的 Internet 协议 (IP) 数据包数 Console.WriteLine(" Received ............................ : {0}", ipstat.ReceivedPackets); //获取转发的 Internet 协议 (IP) 数据包数 Console.WriteLine(" Forwarded ........................... : {0}", ipstat.ReceivedPacketsForwarded); //获取传送的 Internet 协议(IP) 数据包数 Console.WriteLine(" Delivered ........................... : {0}", ipstat.ReceivedPacketsDelivered); //获取已收到但被丢弃的 Internet 协议 (IP) 数据包数 Console.WriteLine(" Discarded ........................... : {0}", ipstat.ReceivedPacketsDiscarded); double percent = (double)ipstat.ReceivedPacketsDiscarded / ipstat.ReceivedPacketsDelivered; string packetsPercent = percent.ToString("P"); return packetsPercent; }
PingReply reply = sysInfo.PingTest(serverUrl); if (reply != null) { if (reply.Status == IPStatus.Success) { txtNetStatus.Text = "延时 " + reply.RoundtripTime + "ms" + " 丢包率:" + sysInfo.GetIPGlobal(); } else { txtNetStatus.Text = "连接服务器超时"; } } else { txtNetStatus.Text = "连接服务器超时"; }