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

将某一主机域名解析为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/10790690/viewspace-960703/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10790690/viewspace-960703/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值