Проверка наличия интернет-соединения — задача, с которой сталкиваются многие разработчики. Хотя кажется, что всё просто, на практике есть нюансы: фаерволы, DNS, доступность серверов. Мы рассмотрим простой и надежный способ — отправку HTTP-запроса к сайту Google.
Если сервер отвечает с кодом 200 (OK) — значит, интернет есть. В противном случае — нет.
using System; using System.Collections.Generic; using System.Linq; using System.Net; namespace Work { class Program { static void Main(string[] args) { ConnectionAvailable("http://www.google.com").ToString(); Console.ReadKey(); } public static bool ConnectionAvailable(string strServer) { try { HttpWebRequest httpReq = (HttpWebRequest)HttpWebRequest.Create(strServer); HttpWebResponse httpWeb = (HttpWebResponse)httpReq.GetResponse(); if (HttpStatusCode.OK == httpWeb.StatusCode) { // HTTP = 200 - Интернет безусловно есть! httpWeb.Close(); Console.WriteLine("Соединения с интернетом присутствует"); return true; } else { // сервер вернул отрицательный ответ, возможно что инета нет httpWeb.Close(); Console.WriteLine("Соединения с интернетом отсутствует, либо трафик сети перегружен"); return false; } } catch (WebException) { Console.WriteLine("Соединения с интернетом отсутствует"); return false; } } } }

Как работает:
- Метод
ConnectionAvailable
делает HTTP-запрос к указанному серверу. - В примере — это
http://www.google.com
. - Если ответ от сервера содержит статус
200 OK
, значит интернет доступен. - В случае исключения или другого кода — соединения нет.
Преимущества такого подхода:
- Простота реализации;
- Работает во всех версиях .NET;
- Проверяется реальное соединение, а не просто наличие сетевого адаптера.
⚠️ Обратите внимание:
- Такой подход требует доступности указанного сервера (в данном случае Google).
- В корпоративных сетях запросы могут блокироваться прокси или фаерволом.
- Можно заменить Google на другой надёжный ресурс или локальный сервер