话题125666的标题是: 如何通过IP地址得到域名? eg: 209.143.154.82 => www.delphibbs.com (30分)
分类:Internet/TCPIP cAkk (1999-08-11 1:12:00)
pegasus (1999-08-11 1:28:00)
使用WinSocket 函数GetSocketByAddr就行了
pegasus (1999-08-11 1:29:00)
? Sorry, GetHostbyAddr
pegasus (1999-08-11 1:44:00)
下面这段程序调试通过: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.
cAkk (1999-08-14 13:55:00)
to pegasus: 在我的机器上GetHostByAddr返回值为nil???
可能会是什么原因?
sherman (1999-08-17 20:34:00)
网络连好了没有,设置了WINS地址了吗?
pegasus (1999-08-17 20:59:00)
1。你的机器的DNS应该设置好了吧!
2。如果你没有在程序中使用Internet的控件,也没有在其它地方调用
WSAStartup,就要把我的例子程序中的begin开始的第二行和end之前的
行的注释去掉,初始化和清除WinSocket的DLL.这两句代码最好放在
程序的初始化和结束处理部分。
cAkk (1999-08-17 22:01:00)
to pegasus: 按照你说的去掉了注释,还是nil.
另:我的机器上是没有设置DSN, 可是我上网很正常啊!
如果要设DSN的话,应该什么地址呢?
CJ (1999-08-17 22:12:00)
hhe,这事情本来就是由DNS来完成的,有个反查找功能的,手工要设置。
不知道WINS是否解决此问题,HOSTS文件???学的都忘记了,呵呵
cAkk (1999-09-10 16:07:00)
就这样把。pegasus的方法应该是对的,虽然我还没有试成功。
CJ-5,pegasus-20,sherman-5,的回答最终被接受。