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

Проверка существования домена в глобальной сети

Delphi , Интернет и Сети , TCP/IP



Автор: Dimka Maslov
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> 
Определяет существование указанного доменного имени
пытаясь определить соответствующий IP-адрес.

Зависимости: WinSock
Автор:       Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт-Петербург
Copyright:   Dimka Maslov
Дата:        3 июля 2002 г.
***************************************************** }

function CheckDomain(Domain: string): Boolean;
var
  Error: DWORD;
  HostEntry: PHostEnt;
  Data: WSAData;
  Address: In_Addr;
begin
  Result := False;
  Error := WSAStartup(MakeWord(1, 1), Data);
  if Error = 0 then
  begin
    HostEntry := gethostbyname(PChar(Domain));
    Result := GetLastError = 0;
  end;
  WSACleanup();
end;

Это функция Delphi, называемая CheckDomain, которая проверяет, существует ли заданный домен в глобальной сети, пытаясь разрешить его на IP-адрес.

Подпись функции function CheckDomain( Domain: string ): Boolean;

Функция принимает один параметр Domain типа string, который является именем домена для проверки.

Декларация переменных В функции объявлены следующие переменные:

  • Error: переменная типа DWORD, которая хранит код ошибки, возвращенный функциями Windows Sockets (WinSock).
  • HostEntry: указатель на структуру PHostEnt, представляющую запись о хосте в базе данных DNS.
  • Data: структура WSAData, используемая для хранения информации об инициализации WinSock.
  • Address: переменная типа In_Addr, которая не используется в этой функции.

Имплементация функции Функция выполняет следующие действия:

  1. Инициализирует код ошибки Error вызовом функции WSAStartup с запросом на версию 1.1 API WinSock. Если инициализация fails, функция возвращает immediately.
  2. Пытается разрешить имя домена Domain с помощью функции gethostbyname. Функция возвращает указатель на структуру PHostEnt, если имя домена найдено в базе данных DNS.
  3. Проверяет, возвращается ли код ошибки 0 функцией GetLastError, что означает, что не возникло ошибок при процессе разрешения имени хоста. Если возникла ошибка, функция устанавливает значение Result в False.
  4. Вызывает функцию WSACleanup для очистки ресурсов, выделенных WinSock.

Возвращаемое значение Функция возвращает логическое значение, указывающее, был ли домен успешно разрешен на IP-адрес. Если возвращается значение True, то это означает, что домен существует в глобальной сети.

Альтернативное решение В современных версиях Delphi можно использовать компонент IdURI из библиотеки Indy для выполнения запросов DNS и проверки существования домена. Вот пример:

uses IdURI;

function CheckDomain(Domain: string): Boolean;
begin
  Result := Uri.Parse(Domain).Resolve;
end;

Эта APPROACH более компактна и эффективна, чем использование функций WinSock, но требует установки и настройки библиотеки Indy.

Функция CheckDomain проверяет существование указанного доменного имени, пытаясь определить соответствующий IP-адрес в глобальной сети.


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

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




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


:: Главная :: TCP/IP ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 05:50:46/0.0033378601074219/0