gethostbyaddr的问题
CString addr=inet_addr("202.115.34.45");
struct hostent FAR * lpHost;
lpHost=gethostbyaddr((char*)&addr,sizeof(addr),AF_INET);
if(lpHost==NULL)
{
MessageBox("error during get name by ip!");
return;
}
1.我把dns客户端服务开了
2.我把netbios服务也启动了
为什么总是得不到主机名? ip是我本机的ip,换成其他人的ip也不行
高手指点
问题点数:20、回复次数:5Top
1 楼nwcow(冰山下的野牦牛)回复于 2004-12-03 23:13:37 得分 0
我想dns客户端服务开不开无所谓,主要是你配置了dns服务器或WINS服务器的ip地址,前者并且还需要你在dns服务器上注册了自己的域名。WINS服务器只对局域网有用Top
2 楼kingzai(stevenzhu)回复于 2004-12-03 23:18:42 得分 0
gethostbyaddr使用时需要dns服务器支持反域名解析Top
3 楼HunterForPig(留着口水的猪)回复于 2004-12-04 11:43:51 得分 20
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);
in_addr ip;
ip.s_addr=inet_addr("127.0.0.1");
struct hostent * lpHost;
lpHost=gethostbyaddr((const char*)&ip,sizeof(ip),AF_INET);
if(lpHost==NULL)
{
printf("error during get name by ip!");
return;
}
你的程序有误,gethostbyaddr第一个参数实际上并不是要char* 类型,而是一个IN_ADDRTop
4 楼liulibo11119(跑)回复于 2004-12-04 11:45:12 得分 0
unsigned long uladdr = inet_addr(addr);
host1 = gethostbyaddr((const char*)&uladdr, 8, AF_INET);
这样试试,inet_addr返回的是 unsigned long 类型Top
5 楼wpemily(wpemily)回复于 2004-12-04 18:54:47 得分 0
en , 谢谢HunterForPig(留着口水的猪)
没错,就是这个问题Top




