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); }
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"); }
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); }
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); }