public void AddLogItem(PingLogItem pii) { pii.ID = TotalAttemps; PingLog.Add(pii); while (PingLog.Count > pingMemory) { PingLog.Remove(PingLog.OrderBy(i => i.ID).First()); } }
private void PingHost(PingItem pi) { using (Ping pinger = new Ping()) { string data = ""; while (data.Length < numPacket.Value) { data += "a"; } byte[] buffer = Encoding.ASCII.GetBytes(data); int timeout = (int)numTicker.Value - 500; PingLogItem pii = new PingLogItem(); pi.pingMemory = (int)numPingMem.Value; pi.TotalAttemps += 1; pii.PacketSize = buffer.Length; pii.TimeOut = timeout; try { PingReply reply = ConvertAndPingHost(pi.Host, pinger, timeout, buffer); pii.Message = reply == null ? "N/A" : reply.Status.ToString(); if (reply != null) { if (reply.Address != null) { pii.ReplyAddress = reply.Address.ToString(); } if (reply.Status != IPStatus.Success) { pi.TotalFails += 1; pii.Failed = true; pii.RoundTrip = -1; } else { pii.RoundTrip = reply.RoundtripTime; } } else { pi.TotalFails += 1; pii.Failed = true; pii.RoundTrip = -1; } } catch (PingException pex) { pii.Message = pex.Message; pi.TotalFails += 1; pii.Failed = true; pii.RoundTrip = -1; } pi.AddLogItem(pii); LogOutput(pi); } }
private void LogOutput(PingItem pi) { LogBuffer lb = new LogBuffer(); // This failed if the input was null (Thomas) PingLogItem pii = pi.PingLog.Where(i => null != i).OrderByDescending(i => i.ID).First(); if (pii.Failed) { string ip = ""; foreach (var i in pi.DNSAddess) { ip = ip == "" ? i : ";" + i; } lb.data = string.Format("\n{0} - {1} - {2} | Count: {3} | Fails: {4} | LastRT: {5} | AvgRT: {6} | PingIP: {7} | DnsIP: {8} | DNSHost: {9}", pii.TimeStamp, pi.Host, pii.Message, pi.TotalAttemps, pi.TotalFails, pii.RoundTrip, pi.AvgRoundTrip, pi.LastPingIP, ip, pi.DNSHostName); lb.name = pi.Host; Log.Add(lb); } }