Перенаправить сайт через определенное время

Многопоточная версия ping:

  using System;
  using System.Collections.Generic;
  using System.Diagnostics;
  using System.Net.NetworkInformation;
  using System.Threading;


  namespace OnlineCheck
  {
      class Program
      {

          static bool isOnline = false;

          static void Main(string[] args)
          {
              List<string> ipList = new List<string> {
                  "1.1.1.1", // Bad ip
                  "2.2.2.2",
                  "4.2.2.2",
                  "8.8.8.8",
                  "9.9.9.9",
                  "208.67.222.222",
                  "139.130.4.5"
                  };

              int timeOut = 1000 * 5; // Seconds


              List<Thread> threadList = new List<Thread>();

              foreach (string ip in ipList)
              {

                  Thread threadTest = new Thread(() => IsOnline(ip));
                  threadList.Add(threadTest);
                  threadTest.Start();
              }

              Stopwatch stopwatch = Stopwatch.StartNew();

              while (!isOnline && stopwatch.ElapsedMilliseconds <= timeOut)
              {
                   Thread.Sleep(10); // Cooldown the CPU
              }

              foreach (Thread thread in threadList)
              { 
                  thread.Abort(); // We love threads, don't we?
              }


              Console.WriteLine("Am I online: " + isOnline.ToYesNo());
              Console.ReadKey();
          }

          static bool Ping(string host, int timeout = 3000, int buffer = 32)
          {
              bool result = false;

              try
              {
                  Ping ping = new Ping();                
                  byte[] byteBuffer = new byte[buffer];                
                  PingOptions options = new PingOptions();
                  PingReply reply = ping.Send(host, timeout, byteBuffer, options);
                  result = (reply.Status == IPStatus.Success);
              }
              catch (Exception ex)
              {

              }

              return result;
          }

          static void IsOnline(string host)
          {
              isOnline =  Ping(host) || isOnline;
          }
      }

      public static class BooleanExtensions
      {
          public static string ToYesNo(this bool value)
          {
              return value ? "Yes" : "No";
          }
      }
  }
119
задан codedude 14 December 2014 в 14:25
поделиться

4 ответа

<meta http-equiv="refresh" content="3;url=http://www.google.com/" />
189
ответ дан 24 November 2019 в 01:05
поделиться

Вы, вероятно, ищете тег meta refresh:

<html>
    <head>
        <meta http-equiv="refresh" content="3;url=http://www.somewhere.com/" />
    </head>
    <body>
        <h1>Redirecting in 3 seconds...</h1>
    </body>
</html>

Обратите внимание, что использование meta refresh в наши дни устарело и не одобряется, но иногда это единственный приемлемый вариант (например, если вы не можете сделать серверную генерацию заголовков перенаправления HTTP и/или вам нужно поддерживать не-JavaScript клиентов и т.д.).

62
ответ дан 24 November 2019 в 01:05
поделиться

Если вам нужен больший контроль, вы можете использовать javascript вместо использования метатега. Это позволит вам иметь какой-то визуальный элемент, например обратный отсчет.

Вот очень простой подход с использованием setTimeout ()

   

Вы будете перенаправлены через 3 секунды

46
ответ дан 24 November 2019 в 01:05
поделиться

Самый простой способ - использовать HTML-тег META, например:

<meta http-equiv="refresh" content="3;url=http://example.com/" />

Wikipedia

10
ответ дан 24 November 2019 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: