Ejemplo n.º 1
0
        private static void DisplayIcmpReply(Probe pingItem)
        {
            if (pingItem.Reply == null)
            {
                return;
            }
            if (pingItem.Thread.CancellationPending)
            {
                return;
            }

            var pingOutput = new StringBuilder($"[{DateTime.Now.ToLongTimeString()}]  ");

            // Read the status code of the ping response.
            switch (pingItem.Reply.Status)
            {
            case IPStatus.Success:
                pingOutput.Append("Reply from ");
                pingOutput.Append(pingItem.Reply.Address.ToString());
                if (pingItem.Reply.RoundtripTime < 1)
                {
                    pingOutput.Append("  [<1ms]");
                }
                else
                {
                    pingOutput.Append($"  [{pingItem.Reply.RoundtripTime} ms]");
                }
                break;

            case IPStatus.DestinationHostUnreachable:
                pingOutput.Append("Reply  [Host unreachable]");
                break;

            case IPStatus.DestinationNetworkUnreachable:
                pingOutput.Append("Reply  [Network unreachable]");
                break;

            case IPStatus.DestinationUnreachable:
                pingOutput.Append("Reply  [Unreachable]");
                break;

            case IPStatus.TimedOut:
                pingOutput.Append("Request timed out.");
                break;

            default:
                pingOutput.Append(pingItem.Reply.Status.ToString());
                break;
            }
            // Add response to the output window.
            Application.Current.Dispatcher.BeginInvoke(
                new Action(() => pingItem.AddHistory(pingOutput.ToString())));

            // If logging is enabled, write the response to a file.
            if (ApplicationOptions.IsLogOutputEnabled && ApplicationOptions.LogPath.Length > 0)
            {
                var logPath = $@"{ApplicationOptions.LogPath}\{pingItem.Hostname}.txt";
                using (System.IO.StreamWriter outputFile = new System.IO.StreamWriter(@logPath, true))
                {
                    outputFile.WriteLine(pingOutput.ToString().Insert(1, DateTime.Now.ToShortDateString() + " "));
                }
            }
        }