示例#1
0
 public static string GetIPbyHost(string hostName)
 {
     if (addrsDict.ContainsKey(hostName))
     {
         IPAddressCheck ip = addrsDict[hostName];
         if (ip != null)
         {
             return(ip.ToString());
         }
     }
     return("");
 }
示例#2
0
        /// <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());
        }