コード例 #1
0
        /// <summary>
        /// Starts an asynchronous ping request and returns the result
        /// </summary>
        /// <returns></returns>
        public async Task <PingResult> StartPingAsync()
        {
            Ping sender = new Ping();

            PingResult result = new PingResult()
            {
                TimeStamp   = DateTime.Now,
                AddressOrIp = this.AddressOrIp
            };
            PingReply reply;

            try
            {
                reply = await sender.SendPingAsync(this.AddressOrIp);

                result.AddReplyData(reply);
            }
            catch (Exception b)
            {
                result.AddReplyException(b);
            }
            finally
            {
                //release resource
                sender.Dispose();

                await Task.Delay(_intervalBetweenPings);
            }
            //return the ping results
            return(result);
        }
コード例 #2
0
        /// <summary>
        /// adds a new ping results to the stats
        /// </summary>
        /// <param name="result"></param>
        public void Add(PingResult result)
        {
            if (String.IsNullOrEmpty(result.AddressOrIp))
            {
                return;
            }

            if (result.Status.Equals(PingResult.StatusMessage.SUCCESS))
            {
                //On successful packet send, determine if max latency increased
                if (result.Latency > _maxLatency)
                {
                    MaxLatency = result.Latency;
                }
                //Latency is less then 1, set to zero
                if (result.Latency < 1)
                {
                    result.Latency = 1;
                }

                _successfulPings.Add(result.Latency);
                OnPropertyChanged(nameof(AverageLatency));
            }
            else // errors or time outs increase packets lost value
            {
                _packetsLost++;
            }

            PacketsSent++;
        }
コード例 #3
0
        /// <summary>
        /// Log the results of a ping to a text file
        /// </summary>
        /// <param name="pingResults"></param>
        /// <param name="path"></param>
        public static void LogToTextFile(PingResult pingResults, string path = null)
        {
            //path unset, set it
            if (String.IsNullOrEmpty(path))
            {
                path = Path;
            }

            //validate pingresult and directory exists
            if (Object.Equals(pingResults, null) && !Directory.Exists(path))
            {
                return;
            }


            string fileName = DateTime.Today.ToShortDateString().Substring(0).Replace('/', '-') + ".log";

            using (StreamWriter fs = File.AppendText(path + fileName))
            {
                fs.WriteLine(pingResults.ToString());
            }
        }