Домой C# Определение состояния подключения к интернету: Справочник по C#

Определение состояния подключения к интернету: Справочник по C#

650
0


      Определить, подключен ли компьютер к интернету, можно при помощи метода NetworkInformation.NetworkInterface.GetIsNetworkAvailable() из библиотеки System.Net. Следует заметить, что если компьютер подключен к локальной сети, то этот способ окажется бесполезным, так как метод указывает, доступно ли сетевое подключение и не различает подключения к интернету от локального. В данном методе сетевое подключение считается доступным, если какой-либо из сетевых интерфейсов отмечен как «активный» и не является интерфейсом замыкания на себя или туннельным интерфейсом.
      В этом случае можно воспользоваться функцией Windows API InternetGetConnectedState. API функция содержится в библиотеке «wininet.dll» и возвращает «true», если присутствует соединение с интернетом, иначе «false», при этом в заданную переменную записывается значение, которое впоследствии сравнивается с константами, для определения посредством чего выполнено подключение к интернету (модем или LAN), используется ли proxy и установлен ли RAS(Remote Access Service). Ниже приведены основные константы, с которыми можно выполнить сравнение возвращаемого значения от данной функции.

  • INTERNET_CONNECTION_MODEM = 0x1 – компьютер подключен к сети посредством модема;
  • INTERNET_CONNECTION_LAN = 0x2 — компьютер подключен к сети посредством LAN;
  • INTERNET_CONNECTION_PROXY = 0x4 — компьютер подключен к сети с использованием прокси;
  • INTERNET_RAS_INSTALLED = 0x10 — установлен ли RAS (Remote Access Service).
  • INTERNET_CONNECTION_OFFLINE = 0x20 – компьютер не в сети.

      Создайте проект «Windows Form» в «Microsoft Visual Studio» и добавьте на главную форму вашего проекта следующие элементы управления:

  • System.Windows.Forms.TextBox textBox1 – текстовое поле для вывода состояния соединения с интернетом;
  • System.Windows.Forms.TextBox textBox2 — текстовое поле для вывода состояния сетевого подключения;
  • System.Windows.Forms.TextBox textBox3 — текстовое поле для вывода состояния подключения компьютера к сети посредством модема;
  • System.Windows.Forms.TextBox textBox4 — текстовое поле для вывода состояния подключения компьютера к сети посредством LAN;
  • System.Windows.Forms.TextBox textBox5 — текстовое поле для вывода состояния подключения компьютера к сети с использованием прокси;
  • System.Windows.Forms.TextBox textBox6 — текстовое поле для вывода значения, установлен ли RAS (Remote Access Service).

У вас получится приведенный ниже пример.

      Сделайте двойной клик левой клавишей мыши по любому свободному месту главной формы, вы перейдете в редактор кода с установкой курсора в автоматически созданном методе «Form1_Load», события «Load», выполняющегося при загрузке формы. Вставьте в тело данного метода приведенный ниже листинг вывода состояния сетевого подключения.

InternetConnection inet = new InternetConnection();
inet.Init();
textBox1.Text = inet.IsInternetConnected.ToString();
textBox2.Text = inet.IsOffline.ToString();
textBox3.Text = inet.IsUsingModem.ToString();
textBox4.Text = inet.IsUsingLAN.ToString();
textBox5.Text = inet.IsUsingProxy.ToString();
textBox6.Text = inet.IsRasEnabled.ToString();

      Так же добавьте класс с «InternetConnection», в котором реализованы необходимые константы и вызов Windows API функции «InternetGetConnectedState».

public class InternetConnection
{
[System.Runtime.InteropServices.DllImport("WININET",
CharSet = System.Runtime.InteropServices.CharSet.Auto)]
static extern bool InternetGetConnectedState(ref InternetConnectionState lpdwFlags,
int dwReserved);

[Flags]
public 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
}

private bool isInternetConnected;
private bool isUsingModem;
private bool isOffline;
private bool isUsingLAN;
private bool isUsingProxy;
private bool isRasEnabled;

public bool IsInternetConnected
{
get { return isInternetConnected; }
}

public bool IsUsingModem
{
get { return isUsingModem; }
}

public bool IsOffline
{
get { return isOffline; }
}

public bool IsUsingLAN
{
get { return isUsingLAN; }
}

public bool IsUsingProxy
{
get { return isUsingProxy; }
}

public bool IsRasEnabled
{
get { return isRasEnabled; }
}

public void Init()
{
InternetConnectionState flags = 0;
isInternetConnected =
InternetGetConnectedState(ref flags, 0);
isUsingModem =
(flags & InternetConnectionState.INTERNET_CONNECTION_MODEM) != 0;
isUsingLAN =
(flags & InternetConnectionState.INTERNET_CONNECTION_LAN) != 0;
isOffline =
(flags & InternetConnectionState.INTERNET_CONNECTION_OFFLINE) != 0;
isUsingProxy =
(flags & InternetConnectionState.INTERNET_CONNECTION_PROXY) != 0;
isRasEnabled =
(flags & InternetConnectionState.INTERNET_RAS_INSTALLED) != 0;
}
}

      Запустите проект, нажав на клавишу «F5». После успешной компиляции и запуска вашего проекта у вас откроется главная форма вашего проекта с характеристиками вашего сетевого подключения.

Если вы отключитесь от локальной сети, то у вас будет следующий результат:

Определение состояния подключения к интернету: Справочник по C#

0.00 (0%) 0 votes

ЧИТАТЬ ТАКЖЕ:  Читаем стандартный вывод консольного приложения + DOS to UTF: Справочник по C#

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь