ITPub博客

首页 > IT基础架构 > 网络安全 > 将某一主机域名解析为IP地址 (转)

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

原创 网络安全 作者:amyz 时间:2007-10-02 11:48:40 0 删除 编辑
将某一主机域名解析为IP地址 (转)[@more@]

将某一主机域名解析为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()


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752019/viewspace-974529/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    3984
  • 访问量
    7363952