Ever needed to convert a host name to an IP number? There is no direct routine available in Delphi for this but we can always code our way through ![]()
Here’s the code with error handling:
uses
Winsock;
...
// The IP number will be returned in string format in the sIP parameter
function HostToIP(sHost: string; var sIP: string): Boolean;
var
aHostName: array[0..255] of Char;
pcAddr : PChar;
HostEnt : PHostEnt;
wsData : TWSAData;
begin
WSAStartup($0101, wsData);
try
GetHostName(aHostName, SizeOf(aHostName));
StrPCopy(aHostName, sHost);
hostEnt := GetHostByName(aHostName);
if Assigned(HostEnt) then
if Assigned(HostEnt^.H_Addr_List) then begin
pcAddr := HostEnt^.H_Addr_List^;
if Assigned(pcAddr) then begin
sIP := Format('%d.%d.%d.%d', [Byte(pcAddr[0]), Byte(pcAddr[1]),
Byte(pcAddr[2]), Byte(pcAddr[3])]);
Result := True;
end else
Result := False;
end else
Result := False
else begin
Result := False;
end;
finally
WSACleanup;
end;
end;
Tags: addr, array, boolean, byte, Delphi, gethostbyname, host name, ip number, resolve, sip, sizeof, string format, winsock, wsastartup
Merlin’s Delphi Forge
Leave a comment