public static string GetIPbyHost(string hostName) { if (addrsDict.ContainsKey(hostName)) { IPAddressCheck ip = addrsDict[hostName]; if (ip != null) { return(ip.ToString()); } } return(""); }
/// <summary> /// Получить трассировку для IP-адреса /// </summary> /// <param name="ipAddressOrHostName"></param> /// <returns></returns> public void Traceroute(Action functionToExec, IPAddressCheck ipAddressCheck) { StringBuilder traceResults = new StringBuilder(); using (Ping pingSender = new Ping()) { PingOptions pingOptions = new PingOptions(); Stopwatch stopWatch = new Stopwatch(); byte[] bytes = new byte[32]; pingOptions.DontFragment = true; pingOptions.Ttl = 1; int maxHops = 30; traceResults.AppendLine(string.Format("Результат traceroute до хоста '{0}', маск. кол-во шагов - {1} :", ipAddressCheck.HostName, maxHops)); traceResults.AppendLine(); for (int i = 1; i < maxHops + 1; i++) { stopWatch.Reset(); stopWatch.Start(); PingReply pingReply = pingSender.Send(ipAddressCheck.ipAddress, 5000, new byte[32], pingOptions); stopWatch.Stop(); traceResults.AppendLine(string.Format("{0}\t{1} ms\t{2}", i, stopWatch.ElapsedMilliseconds, pingReply.Address)); ipAddressCheck.ResCheck = string.Format("шаг №: {0}", i); functionToExec(); if (pingReply.Status == IPStatus.Success) { traceResults.AppendLine(); traceResults.AppendLine("Трассировка завершена."); break; } pingOptions.Ttl++; } ipAddressCheck.ResCheck += " - СТОП"; functionToExec(); } Log.Info(traceResults.ToString()); }