如何通过IP地址得到域名? eg: 209.143.154.82 => www.delphibbs.com(30分)

  • 主题发起人 主题发起人 cAkk
  • 开始时间 开始时间
使用WinSocket 函数GetSocketByAddr就行了
 
? Sorry, GetHostbyAddr
 
下面这段程序调试通过:theHostName运行结果为:'www.delphibbs.com'

Uses WinSock, SysUtils;

var Phe: PHostEnt;
// HostEntry buffer for name lookup
theHostName, HostIP: String;
addr: Integer;
wsaInitData: WSADATA;
begin
// If used with other code, you may not need WSAStartup
// WSAStartup(1, wsaInitData);
addr := inet_addr(PChar('209.143.154.82'));
Phe := GetHostByAddr(@addr, sizeof(integer), PF_INET);
if Phe <> Nil then
begin
// Addr := longint(plongint(Phe^.h_addr_list^)^);
theHostName := Phe^.h_name;
// HostIP := StrPas(inet_ntoa(TInAddr(Addr)));
end;
// You may not cleanup if other code still needs WinSock
// WSACleanup;
end.
 
to pegasus: 在我的机器上GetHostByAddr返回值为nil???
可能会是什么原因?
 
网络连好了没有,设置了WINS地址了吗?
 
1。你的机器的DNS应该设置好了吧!
2。如果你没有在程序中使用Internet的控件,也没有在其它地方调用
WSAStartup,就要把我的例子程序中的begin开始的第二行和end之前的
行的注释去掉,初始化和清除WinSocket的DLL.这两句代码最好放在
程序的初始化和结束处理部分。
 
to pegasus: 按照你说的去掉了注释,还是nil.
另:我的机器上是没有设置DSN, 可是我上网很正常啊!
如果要设DSN的话,应该什么地址呢?
 
hhe,这事情本来就是由DNS来完成的,有个反查找功能的,手工要设置。
不知道WINS是否解决此问题,HOSTS文件???学的都忘记了,呵呵
 
就这样把。pegasus的方法应该是对的,虽然我还没有试成功。
 

Similar threads

后退
顶部