大家们,请过来帮一下:请问用Delphi怎样实现IP地址解析为服务器域名?thanks!!!(100分)

  • 主题发起人 主题发起人 pengd
  • 开始时间 开始时间
P

pengd

Unregistered / Unconfirmed
GUEST, unregistred user!
请问下面的函数行不行?
function IPAddrToName(IPAddr : String): String;
var
SockAddrIn: TSockAddrIn;
HostEnt: PHostEnt;
WSAData: TWSAData;
begin
WSAStartup($101, WSAData);
SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
if HostEnt<>nil then
begin
result:=StrPas(Hostent^.h_name)
end
else
begin
result:='';
end;
end;
好象它是IP地址解析为计算机名称.
thanks!!![:)]
 
就是用这个函数的
 
gethostbyaddr()就是这个函数没有什么问题,他都是查看DNS得到域名
 
这个和你的差不多,不过得到的是计算机名,不是域名,非本局域网内的估计不行。
uses winsock;

function iptoname(ip: string): string;
var
WSAData: TWSAData;
p: PHostEnt;
InetAddr: dword;
begin
result := '''';
WSAStartup(2, WSAData);
InetAddr := inet_addr(PChar(IP));
try
p := GetHostByAddr(@InetAddr, Length(IP), PF_Inet);
if p <> nil then result := p^.h_name;
except
result := '''';
end;
end;
 
必须询问DNS才能得到域名
 
呵呵,我给出来的那段竟然也可以看非本局域网的计算机名称。
不过Delphibbs.com可得不到,是“,”呵呵。
 
ShowMessage(iptoname('216.239.51.101'));
 
gethostbyaddr就是用UDP查询DNS得到他的IP~~~~~~~~~~~~~
 
怎么变成这样了,每个人的回答都看不到呢?[:(][:(]
 
后退
顶部