Как определить 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
Как скачать файл из сети?
Получение файлов из буфера обмена
