Вы можете использовать IsNetworkAlive (). Хотя технически он не проверяет состояние канала, он, вероятно, лучше, поскольку он также может обнаруживать беспроводное и коммутируемое соединение. Вот пример:
using System.Runtime.InteropServices;
class Program
{
[DllImport("sensapi.dll")]
static extern bool IsNetworkAlive(out int flags);
static void Main(string[] args)
{
int flags;
bool connected = IsNetworkAlive(out flags);
}
}
Параметр flags возвращает ли подключение к Интернету или просто к локальной сети. Я не уверен на 100%, как он это знает, но готов поспорить, что он просто смотрит, есть ли установлен шлюз по умолчанию.