请教如何将域名转IP

bwe2009 2012-08-28 03:24:49
网上看了很多例子,发现一个问题,很多域名最后解析出来不对,都是同一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
...全文
100 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuihan20e 2012-08-29
  • 打赏
  • 举报
回复
还有一种办法就是将ping的结果放到文本文件,再读
shuihan20e 2012-08-29
  • 打赏
  • 举报
回复
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;

引用winsock

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧