将某一主机域名解析为IP地址

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

将某一主机域名解析为IP地址。

使用 WinSock 单元;

过程如下:

function HostToIP(Name: string; var 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;

测试时请在在线状态。

测试代码:

var

IP: string;

DNS: string;

begin

DNS := InputBox('输入DNS域名', '主机名称:', '');

if HostToIp(DNS, IP) then showmessage(IP);

end;

作者:Latfi Baran

我测试Kingron给出的用法时,hostEnt老是=nil。

后来我在用gethostbyname(...)之前,加入WSAStartup(...),终于一切OK。

Winsock单元中没有getaddressbyname()

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航