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 = "连接服务器超时";
                }

  

posted @ 2020-04-16 16:45  寒夜美美  阅读(852)  评论(0编辑  收藏  举报