请教如何将域名转IP
网上看了很多例子,发现一个问题,很多域名最后解析出来不对,都是同一IP地址。
请给个好点的办法。
比如以下的方法
procedure TForm1.Button2Click(Sender: TObject);
type
TinfoList=array[0..20] of PInAddr;
pInfoList=^TinfoList;
var
pEnt:PHostEnt;
p:pInfoList;
i:integer;
begin
pEnt:=GetHostByName(pchar(edit1.text));
if pEnt<>nil then
begin
i:=0;
p:=pInfoList(pent^.h_addr_list);
while p[i]<>nil do
begin
ListBox1.Items.Add(StrPas(inet_ntoa(p[i]^)));
inc(i);
end;
end;
end;
很多结果发现都是省级电信的IP,不是实际那个域名的IP
[解决办法]
- Delphi(Pascal) code
function HostToIP(Name: string; var Ip: string): Boolean;varwsdata : TWSAData;hostName : array [0..255] of char;hostEnt : PHostEnt;addr : PChar;beginWSAStartup ($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;endend;