Проверка наличия интернет-соединения — задача, с которой сталкиваются многие разработчики. Хотя кажется, что всё просто, на практике есть нюансы: фаерволы, 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 на другой надёжный ресурс или локальный сервер
