如何将域名转换IP地址(100分)

  • 主题发起人 主题发起人 RSC00
  • 开始时间 开始时间
R

RSC00

Unregistered / Unconfirmed
GUEST, unregistred user!
我想将域名转换IP地址请各位高手赐教。
 
配置DNS服务啊
 
uses WinSock;

function SvrNameToIP(const SvrName: string): string;
type
PPInAddr = ^PInAddr;
var
phe: PHostEnt;
pp: PPInAddr;
GInitData: TWSADATA;
begin
WSAStartup($101, GInitData);
Result := '';

phe := GetHostByName(PChar(SvrName));

if phe = nil then
Exit;

pp := PPInAddr(phe^.h_addr_list);
if pp^ <> nil then
Result := StrPas(inet_ntoa(pp^^));

WSACleanup;
end;
 
看到一篇这样的文章:
将某一主机域名解析为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;
 
多人接受答案了。
 
后退
顶部