Delphi - база знаний

         

Как вычислить IP адрес компьютера?


Как вычислить IP адрес компьютера?



Описывается функция, которая показывает, как вычислить IP адрес компьютера в интернете по его доменному имени.

Совместимость: Delphi 3.x (или выше)

Объявляем Winsock, для использования в функции

function HostToIP(Namestringvar Ip: string): Boolean; 
var 
wsdata : TWSAData;   
hostName : array [0..255] of char;   
hostEnt : PHostEnt;   




addr : PChar;   
begin 
WSAStartup ($0101, wsdata);   
try   
gethostname (hostName, sizeof (hostName));   
StrPCopy(hostName, Name);   
hostEnt := gethostbyname (hostName);   
if Assigned (hostEnt) then   
  if Assigned (hostEnt^.h_addr_list) then   
    begin   
      addr := hostEnt^.h_addr_list^;   
if Assigned (addr) then   
begin   
IP := Format ('%d.%d.%d.%d', [byte (addr [0]),   
byte (addr [1]), byte (addr [2]), byte (addr [3])]);   
Result := True;   
end   
else   
Result := False;   
end   
else   
Result := False   
else   
begin   
Result := False;   
end;   
finally   
  WSACleanup;   
end   
end

Вы можете разметстить на форме EditBox, Кнопку и Label и добавить к кнопке следующий обработчик события OnClick:



procedure TForm1.Button1Click(Sender: TObject); 
var 
  IP: string
begin 
  if HostToIp(Edit1.Text, IP) then Label1.Caption := IP; 
end

Автор ответа: neutrino
Взято с Vingrad.ru



А вот какой способ предложен для нахождения собственного IP рассылкой мастеров дельфи ():

var
  WSAData: TWSAData;
  SockAddrIn: TSockAddrIn;
  Host: PHostEnt;
  // Эти переменные объявлены в Winsock.pas
begin
  if WSAStartup($101, WSAData) = 0 then begin
    Host := GetHostByName(@Localname[1]);
    if Host<>nil then begin
      SockAddrIn.sin_addr.S_addr:= longint(plongint(Host^.h_addr_list^)^);
      LocalIP := inet_ntoa(SockAddrIn.sin_addr);
    end;
    WSACleanUp;
  end;
end;

Взято с Vingrad.ru





Содержание раздела