Проверка соединения с интернет/сервером - C#

Узнай цену своей работы

Формулировка задачи:

Добрый вечер. Прошу помочь разобраться в проблеме. В программе, перед выполнением все остальных действий идет проверка, вначале на связь с интернетом, а потом на связь с сервером. Поискав на форуме подобные темы нашел замечательно работающий код с отдельным классом:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace phoneinfo
{
    class Program
    {
        static void Main(string[] args)
        {
            if (Internet.CheckConnection())
                Console.WriteLine("Соединение с интернетом найдено");
            else
                Console.WriteLine("Соединение с интернетом не найдено");
                Console.ReadKey();
 
        }
 
    }
}
класс
using System;
using System.IO;
using System.Net;
using System.Net.NetworkInformation;
using System.Runtime.InteropServices;
 
namespace phoneinfo
{
    public static class Internet
    {
        [DllImport("wininet.dll")]
        static extern bool InternetGetConnectedState(ref InternetConnectionState lpdwFlags, int dwReserved);
 
        [Flags]
        enum InternetConnectionState : int
        {
            INTERNET_CONNECTION_MODEM = 0x1,
            INTERNET_CONNECTION_LAN = 0x2,
            INTERNET_CONNECTION_PROXY = 0x4,
            INTERNET_RAS_INSTALLED = 0x10,
            INTERNET_CONNECTION_OFFLINE = 0x20,
            INTERNET_CONNECTION_CONFIGURED = 0x40
        }
 
        static object _syncObj = new object();
 
        /// <summary>
        /// Проверить, есть ли соединение с интернетом
        /// </summary>
        /// <returns></returns>
        public static Boolean CheckConnection()
        {
            lock (_syncObj)
            {
                try
                {
                    InternetConnectionState flags = InternetConnectionState.INTERNET_CONNECTION_CONFIGURED | 0;
                    bool checkStatus = InternetGetConnectedState(ref flags, 0);
 
                    if (checkStatus)
                        return PingInternet(new string[]
                                            {
                                                @"google.com",
                                                @"microsoft.com",
                                                @"ibm.com"
                                            });
 
                    return checkStatus;
                }
                catch
                {
                    return false;
                }
            }
        }

        /// <summary>
        /// Пингует сервера, при первом получении ответа от любого сервера возвращает true 
        /// </summary>
        /// <param name="InternetList">Список серверов</param>
        /// <returns></returns>
        public static bool PingInternet(string[] InternetList)
        {
            bool haveAnInternetConnection = false;
            Ping ping = new Ping();
            for (int i = 0; i < InternetList.Length; i++)
            {
                PingReply pingReply = ping.Send(InternetList[i]);
                haveAnInternetConnection = (pingReply.Status == IPStatus.Success);
                if (haveAnInternetConnection)
                    break;
            }
 
            return haveAnInternetConnection;
        }
    }
}
Но как всегда есть но..... подскажите пожалуйста как переделать код так, чтоб тело программы не выполнялось дольше пока связь не будет установлена. Мне в голову приходит идея с while (false) Console.WriteLine("Соединение с интернетом не найдено"), но там не к чему привязать.... если можно - помогите. Спасибо.
Я извиняюсь за ап.... но мне кто-нибудь может ответить? Или я не по теме, или вопрос слишком легкий/сложный.

Решение задачи: «Проверка соединения с интернет/сервером»

textual
Листинг программы
while(true)
{
    if (Internet.CheckConnection())
   {
       ....
   }
 
    Thread.Sleep(3000);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.692 из 5
Похожие ответы