Гараж Delphi




Алгоритмы и функции для эффективной разработки приложений в среде программирования Delphi

Как определить IP-адреса компьютера из Delphi?

20.02.2009 от semen

Иногда требуется знать весь список IP адресов компьютера пользователя. Например, при написании файрвола :). Для получения списка IP адресов компьютера из программы, написанной на Delphi, можно воспользоваться следующей функцией:

function GetLocalPs: TStringList;
type
  TaPInAddr = Array[0..10] of PInAddr;
  PaPInAddr = ^TaPInAddr;
var
  phe: PHostEnt;
  pptr: PaPInAddr;
  Buffer: Array[0..63] of Char;
  I: Integer;
  GInitData: TWSAData;
  IPs: TStringList;
begin
  IPs := TStringList.Create;
  WSAStartup($101, GInitData);
  GetHostName(Buffer, SizeOf(Buffer));
  phe := GetHostByName(buffer);
  if phe = nil then IPs.Add('No IP found')
  else
  begin
    pPtr := PaPInAddr(phe^.h_addr_list);
    I := 0;
    while pPtr^[I] <> nil do
    begin
      IPs.Add(inet_ntoa(pptr^[I]^));
      Inc(I);
    end;
  end;
  WSACleanup;
  Result := IPs;
end;

Для работы функции нужно включить модуль Winsock в секции uses. Функция возвращает список IP в виде StringList.

См. также:
Резолвинг IP-адреса по хосту в Delphi
Как скачать файл из сети?
Получение файлов из буфера обмена

Рубрики: Алгоритмы, Сеть, Общее

Оставьте комментарий

Заметьте: комментарии проверяются автором сайта. Нет смысла отправлять комментарий два раза.