Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Определить, есть ли активное соединение с Интернетом

Delphi , Интернет и Сети , Интернет

Определить, есть ли активное соединение с Интернетом

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{Static linking. }

 uses
   WinInet;

 {...}

 function IsConnectedToInternet: Boolean;
 var
   dwConnectionTypes: DWORD;
 begin
   dwConnectionTypes :=
     INTERNET_CONNECTION_MODEM +
     INTERNET_CONNECTION_LAN +
     INTERNET_CONNECTION_PROXY;
   Result := InternetGetConnectedState(@dwConnectionTypes, 0);
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 begin
   if IsConnectedToInternet then
     ShowMessage('Connected.')
   else
     ShowMessage('Not Connected.')
 end;

Here's the translation of the text into Russian:

Код проверяет наличие активной связи с интернетом на платформе Windows с помощью Delphi. Он использует библиотеку WinInet, которая предоставляет функции для работы с сетевыми соединениями.

Вот как это работает:

  1. Функция IsConnectedToInternet получает текущие типы соединений с помощью функции InternetGetConnectedState из WinInet. Эта функция принимает два параметра: указатель на переменную, которая будет получать тип(ы) соединения, и значение, указывающее, нужно ли получить только основное соединение.
  2. В этом случае мы устанавливаем dwConnectionTypes в сочетание трех типов соединений:
    • INTERNET_CONNECTION_MODEM: соединение модема
    • INTERNET_CONNECTION_LAN: локальная сеть (LAN)
    • INTERNET_CONNECTION_PROXY: соединение через прокси-сервер
  3. Функция InternetGetConnectedState возвращает логическое значение, указывающее, есть ли активное соединение. Это значение присваивается переменной Result функции IsConnectedToInternet.
  4. В обработчике события Button1Click мы вызываем функцию IsConnectedToInternet и проверяем ее результат. Если он истинен, мы отображаем сообщение об ошибке "Connected.". Иначе, мы отображаем сообщение об ошибке "Not Connected.".

Альтернативное решение с использованием компонента TIdStack из библиотеки Indy:

uses
  IdStack;

function IsConnectedToInternet: Boolean;
begin
  Result := TIdStack.GetStackStatusBits = [ssfConnected];
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if IsConnectedToInternet then
    ShowMessage('Connected.')
  else
    ShowMessage('Not Connected.');
end;

В этом решении мы используем метод GetStackStatusBits компонента TIdStack, чтобы проверить наличие активного соединения. Если результат равен [ssfConnected], то это означает, что есть подключенный сокет, и мы отображаем сообщение об ошибке "Connected.". Иначе, мы отображаем сообщение об ошибке "Not Connected.".

Обратите внимание, что Indy не так широко используется, как WinInet, но он предоставляет болееadvanced функциональность для сетевых соединений и может быть хорошим альтернативой в определенных ситуациях.

Определение активного соединения с Интернетом в программном коде на Delphi с помощью функции InternetGetConnectedState.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Интернет ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 03:18:38/0.0032689571380615/0