Esempio n. 1
0
        public MonitorStates GetState(PingResult pingResult)
        {
            MonitorStates result = MonitorStates.Good;

            if (pingResult.Success)
            {
                if (pingResult.PingTime > TimeOut)
                {
                    result = MonitorStates.Error;
                }
                else if (pingResult.PingTime > MaxTime)
                {
                    result = MonitorStates.Warning;
                }
                else
                {
                    result = MonitorStates.Good;
                }
            }
            else
            {
                result = MonitorStates.Error;
            }
            return(result);
        }
Esempio n. 2
0
 private void RefreshList()
 {
     System.Windows.Forms.Cursor.Current = Cursors.WaitCursor;
     lvwHosts.BeginUpdate();
     foreach (ListViewItem itmX in lvwHosts.Items)
     {
         HostEntry host = (HostEntry)itmX.Tag;
         try
         {
             PingResult    pingResult = host.Ping();
             MonitorStates result     = host.GetState(pingResult);
             if (pingResult.Success)
             {
                 itmX.SubItems[1].Text = pingResult.PingTime.ToString();
                 itmX.SubItems[2].Text = pingResult.LastErrorMsg;
                 if (result == MonitorStates.Good)
                 {
                     itmX.ImageIndex = 0;
                     itmX.BackColor  = SystemColors.Window;
                 }
                 else if (result == MonitorStates.Warning)
                 {
                     itmX.ImageIndex = 1;
                     itmX.BackColor  = Color.SandyBrown;
                 }
                 else
                 {
                     itmX.ImageIndex = 2;
                     itmX.BackColor  = Color.Salmon;
                 }
             }
             else
             {
                 itmX.ImageIndex       = 2;
                 itmX.BackColor        = Color.Salmon;
                 itmX.SubItems[1].Text = "Err";
                 itmX.SubItems[2].Text = pingResult.LastErrorMsg;
             }
         }
         catch (Exception ex)
         {
             itmX.ImageIndex       = 2;
             itmX.SubItems[1].Text = "Err";
             itmX.SubItems[2].Text = ex.Message;
             itmX.BackColor        = Color.Salmon;
         }
     }
     lvwHosts.EndUpdate();
     System.Windows.Forms.Cursor.Current = Cursors.Default;
     toolStripStatusLabel1.Text          = "Last updated " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
 }
Esempio n. 3
0
        public PingResult Ping()
        {
            PingResult result = new PingResult();

            result.Success      = false;
            result.PingTime     = -1;
            result.LastErrorMsg = "";
            try
            {
                using (System.Net.NetworkInformation.Ping ping = new System.Net.NetworkInformation.Ping())
                {
                    System.Net.NetworkInformation.PingReply reply = ping.Send(HostName, TimeOut);
                    if (reply.Status == System.Net.NetworkInformation.IPStatus.Success)
                    {
                        result.PingTime = Convert.ToInt32(reply.RoundtripTime);
                        result.Success  = true;
                        if (reply.Address != null)
                        {
                            result.LastErrorMsg = reply.Address.ToString();
                        }
                    }
                    else // if (reply.Status == System.Net.NetworkInformation.IPStatus.TimedOut)
                    {
                        result.PingTime     = int.MaxValue;
                        result.LastErrorMsg = "Timed out";
                    }
                }
            }
            catch (Exception ex)
            {
                result.Success      = false;
                result.PingTime     = -1;
                result.LastErrorMsg = ex.Message;
            }
            LastPingResult = result;
            return(result);
        }
Esempio n. 4
0
        public override MonitorStates GetState()
        {
            MonitorStates returnState         = MonitorStates.Good;
            StringBuilder plainTextDetails    = new StringBuilder();
            StringBuilder htmlTextTextDetails = new StringBuilder();
            string        lastAction          = "";
            long          pingTotalTime       = 0;
            int           errors   = 0;
            int           warnings = 0;
            int           success  = 0;

            LastDetailMsg.PlainText = "Pinging hosts";
            htmlTextTextDetails.AppendLine("<ul>");
            LastError    = 0;
            LastErrorMsg = "";
            try
            {
                foreach (HostEntry host in HostEntries)
                {
                    PingResult    pingResult   = host.Ping();
                    MonitorStates currentState = host.GetState(pingResult);
                    if (pingResult.Success)
                    {
                        pingTotalTime += pingResult.PingTime;
                        if (currentState == MonitorStates.Error)
                        {
                            errors++;
                            LastErrorMsg = string.Format("Error: {0} - {1}", host.HostName, pingResult.LastErrorMsg);
                            plainTextDetails.AppendLine(LastErrorMsg);
                            htmlTextTextDetails.AppendLine(string.Format("<li><b>Error</b>: {0} - {1}</li>", host.HostName, pingResult.LastErrorMsg));
                        }
                        else if (currentState == MonitorStates.Warning)
                        {
                            warnings++;
                            LastErrorMsg = string.Format("Warning: {0} - {1}ms - {2}", host.HostName, pingResult.PingTime, pingResult.LastErrorMsg);
                            plainTextDetails.AppendLine(LastErrorMsg);
                            htmlTextTextDetails.AppendLine(string.Format("<li><b>Warning</b>: {0} - {1}ms - {2}</li>", host.HostName, pingResult.PingTime, pingResult.LastErrorMsg));
                        }
                        else
                        {
                            success++;
                            LastErrorMsg = string.Format("Success: {0} - {1}ms - {2}", host.HostName, pingResult.PingTime, pingResult.LastErrorMsg);
                            plainTextDetails.AppendLine(LastErrorMsg);
                            htmlTextTextDetails.AppendLine(string.Format("<li><b>Success</b>: {0} - {1}ms - {2}</li>", host.HostName, pingResult.PingTime, pingResult.LastErrorMsg));
                        }
                    }
                    else
                    {
                        errors++;
                        LastErrorMsg = string.Format("Error: {0} - {1}", host.HostName, pingResult.LastErrorMsg);
                        plainTextDetails.AppendLine(LastErrorMsg);
                        htmlTextTextDetails.AppendLine(string.Format("<li><b>Error</b>: {0} - {1}</li>", host.HostName, pingResult.LastErrorMsg));
                    }

                    //int pingTime = -1;

                    //using (System.Net.NetworkInformation.Ping ping = new System.Net.NetworkInformation.Ping())
                    //{
                    //    lastAction = "Pinging " + host.HostName;
                    //    System.Net.NetworkInformation.PingReply reply = ping.Send(host.HostName, host.TimeOut);

                    //    if (reply.Status == System.Net.NetworkInformation.IPStatus.Success)
                    //        pingTime = Convert.ToInt32(reply.RoundtripTime);
                    //    else // if (reply.Status == System.Net.NetworkInformation.IPStatus.TimedOut)
                    //        pingTime = int.MaxValue;
                    //    pingTotalTime += pingTime;

                    //    if (pingTime >= host.TimeOut) //if any time-out then it is an error
                    //    {
                    //        LastDetailMsg.PlainText = "Time-out pinging " + host.HostName;
                    //        LastErrorMsg = "Time-out pinging " + host.HostName;
                    //        LastDetailMsg.HtmlText = string.Format("<p><b>Time-out pinging:</b> {0}</p>", host.HostName);
                    //        return MonitorStates.Error;
                    //    }
                    //    else if (pingTime > host.MaxTime)
                    //    {
                    //        returnState = MonitorStates.Warning;
                    //        plainTextDetails.AppendLine(string.Format("Ping {0}: {1}ms - Warning", host.HostName, pingTime));
                    //        htmlTextTextDetails.AppendLine(string.Format("<li>Ping {0}: {1}ms - <b>Warning</b></li>", host.HostName, pingTime));
                    //    }
                    //    else
                    //    {
                    //        plainTextDetails.AppendLine(string.Format("Ping {0}: {1}ms - Good", host.HostName, pingTime));
                    //        htmlTextTextDetails.AppendLine(string.Format("<li>Ping {0}: {1}ms - <b>Good</b></li>", host.HostName, pingTime));
                    //    }
                    //}
                }
                htmlTextTextDetails.AppendLine("</ul>");
                LastDetailMsg.PlainText = plainTextDetails.ToString().TrimEnd('\r', '\n');
                LastDetailMsg.HtmlText  = htmlTextTextDetails.ToString();
                LastDetailMsg.LastValue = pingTotalTime;

                if (errors > 0) // any errors
                {
                    returnState = MonitorStates.Error;
                }
                else if (warnings > 0) //any warnings
                {
                    returnState = MonitorStates.Warning;
                }
            }
            catch (Exception ex)
            {
                LastError               = 1;
                LastErrorMsg            = ex.Message;
                LastDetailMsg.PlainText = ex.Message;
                LastDetailMsg.HtmlText  = string.Format("<p><b>Last action:</b> {0}</p><blockquote>{1}</blockquote>", lastAction, ex.Message);
                returnState             = MonitorStates.Error;
            }
            return(returnState);
        }