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

Как получить доменное имя по IP

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

Как получить доменное имя по IP

Спpашивает дочка у мамы:
- Мам, а кто этот волосатый дядя с кpасными глазками?
- Это твой папа, доченька.
- А он что, заболел?
- Да нет, он к интеpнету подключился.


uses winsock;

function IPAddrToName(IPAddr : string): string;
var
  SockAddrIn: TSockAddrIn;
  HostEnt: PHostEnt;
  WSAData: TWSAData;
begin
  WSAStartup($101, WSAData);
  SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
  HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
  if HostEnt <> nil then
    result := StrPas(Hostent^.h_name)
  else
    result:='';
end;

//Пример использования
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := IPAddrToName(Edit1.Text);
end;

Программный код, предоставленный вами, написан на языке Delphi и использует библиотеку Winsock для получения доменного имени из IP-адреса. Вот подробное описание, как работает этот код:

  1. Функция IPAddrToName принимает строковый параметр - IP-адрес и возвращает соответствующее доменное имя в виде строки.
  2. Функция сначала инициализирует библиотеку Winsock с помощью вызова WSAStartup.
  3. Затем создается структура TSockAddrIn, которая представляет собой интернет-сокетный адрес.
  4. Поле sin_addr.s_addr структуры SockAddrIn устанавливается в значение IP-адреса, переданного в функцию как параметр, с помощью вызова функции inet_addr.
  5. Затем вызывается функция gethostbyaddr с значением поля SockAddrIn.sin_addr.s_addr и адресной семьей AF_INET (которая соответствует IPv4) для разрешения IP-адреса до доменного имени.
  6. Если разрешение успешно, то возвращается строковое значение доменного имени с помощью функции StrPas. В противном случае возвращается пустая строка.

Пример использования функции в процедуре Button1Click показывает, как использовать эту функцию. Она берет текст из поля ввода (предположительно содержит IP-адрес), вызывает функцию IPAddrToName с этим текстом как параметром и затем устанавливает заголовок контрольной labels на полученное доменное имя.

Вот альтернативное решение, использующее более современный подход:

Вы можете использовать компонент TIdDNSResolver из библиотеки Indy (которая включена в Delphi) для разрешения IP-адресов до доменных имен. Этот компонент обеспечивает более надежный и гибкий способ выполнения запросов DNS.

uses IdDNS, IdIP;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := TIdDNSResolver.Resolve(Edit1.Text).DomainName;
end;

В этом примере компонент TIdDNSResolver используется для разрешения IP-адреса в поле ввода до доменного имени. Полученное доменное имя затем устанавливается как заголовок контрольной labels.

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

Данная статья описывает способ преобразования IP-адреса в доменное имя с помощью программирования на языке Delphi, используя библиотеку Winsock и функцию gethostbyaddr.


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:34:55/0.0055000782012939/1