uese winsock
Function IPToHost(IPAddr : String; Var Host:String): Boolean;
var
SockAddrIn: TSockAddrIn;
HostEnt: PHostEnt;
WSAData: TWSAData;
begin
Result:=False;
WSAStartup($101, WSAData);
try
SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
if HostEnt<>nil then
begin
Host:=StrPas(Hostent^.h_name);
Result:=True;
end
else
begin
Host:='';
Result:=False;
end;
Finally
WSACleanup;
end;
end;
Function HostToIP(Name:string; var Ip:string):Boolean;
var
wsdata:TWSAData;
hostName:array [0..255] of char;
hostEnt
HostEnt;
addr
Char;
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;