Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Получить имя компьютера по IP

Мой домашний компьютер используется на 300%: на системный блок мы складываем журналы, с клавиатурой и мышкой играется ребенок, а на мониторе сидит плюшевый медведь.


uses 
  WinSock; 

function LocalIP: string; 
type 
  TaPInAddr = array[0..10] of PInAddr; 
  PaPInAddr = ^TaPInAddr; 
var 
  phe: PHostEnt; 
  pptr: PaPInAddr; 
  Buffer: array[0..63] of Char; 
  I: Integer; 
  GInitData: TWSAData; 
begin 
  WSAStartup($101, GInitData); 
  Result := ''; 
  GetHostName(Buffer, SizeOf(Buffer)); 
  phe := GetHostByName(buffer); 
  if phe = nil then Exit; 
  pPtr := PaPInAddr(phe^.h_addr_list); 
  I := 0; 
  while pPtr^[I] <> nil do 
  begin 
    Result := inet_ntoa(pptr^[I]^); 
    Inc(I); 
  end; 
  WSACleanup; 
end; 

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 
  ShowMessage(IPAddrToName(LocalIp)); 
end; 

{**************************************} 

// Function to get the IP Address from a Host 

function GetIPFromHost(const HostName: string): string; 
type 
  TaPInAddr = array[0..10] of PInAddr; 
  PaPInAddr = ^TaPInAddr; 
var 
  phe: PHostEnt; 
  pptr: PaPInAddr; 
  i: Integer; 
  GInitData: TWSAData; 
begin 
  WSAStartup($101, GInitData); 
  Result := ''; 
  phe := GetHostByName(PChar(HostName)); 
  if phe = nil then Exit; 
  pPtr := PaPInAddr(phe^.h_addr_list); 
  i := 0; 
  while pPtr^[i] <> nil do 
  begin 
    Result := inet_ntoa(pptr^[i]^); 
    Inc(i); 
  end; 
  WSACleanup; 
end;

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay