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

Как определить свой IP адрес

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

Как определить свой IP адрес

По нику встречают, по IP провожают.


uses
  WinSock;

function GetLocalIP: String;
const WSVer = $101;
var
  wsaData: TWSAData;
  P: PHostEnt;
  Buf: array [0..127] of Char;
begin
  Result := '';
  if WSAStartup(WSVer, wsaData) = 0 then begin
    if GetHostName(@Buf, 128) = 0 then begin
      P := GetHostByName(@Buf);
      if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
    end;
    WSACleanup;
  end;
end;


Here is the translation of the text into Russian:

Программа на языке Delphi для определения локального IP-адреса!

Код использует Windows Sockets (WinSock) API и функцию WSAStartup для инициализации библиотеки WinSock. Затем он использует GetHostName для получения имени хоста локальной машины, которое хранится в буфере. Функция GetHostByName используется для разрешения имени хоста на IP-адрес. Наконец, функция Inet_ntoa используется для конвертации IP-адреса из двоичной формы в строку.

Вот разбивка кода:

  1. WSVer := $101; - Устанавливает номер версии для инициализации WinSock.
  2. var wsaData: TWSAData; - Объявляет переменную для хранения данных инициализации WinSock.
  3. P: PHostEnt; - Объявляет указатель на структуру HOSTENT, которая будет содержать информацию о разрешенном имени хоста и IP-адресе.
  4. Buf: array [0..127] of Char; - Объявляет буфер для хранения имени хоста.
  5. Result := ''; - Инициализирует пустую строку для хранения результата IP-адреса.
  6. if WSAStartup(WSVer, wsaData) = 0 then begin - Инициализирует WinSock с помощью предоставленного номера версии и хранит результат в wsaData.
  7. if GetHostName(@Buf, 128) = 0 then begin - Разрешает имя хоста на строку и хранит ее в буфере.
  8. P := GetHostByName(@Buf); - Конвертирует строку имени хоста в IP-адрес с помощью разрешения DNS.
  9. if P <> nil then Result := iNet_ntoa(PInAddr(P^.h_addr_list^)^); - Конвертирует двоичный IP-адрес в строку с помощью Inet_ntoa и присваивает ее переменной Result.
  10. WSACleanup; - Очищает ресурсы WinSock.

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

Обратите внимание, что этот код использует встроенную поддержку WinSock Delphi и не требует дополнительных библиотек.

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


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

Получайте свежие новости и обновления по 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 12:15:49/0.0053119659423828/1