使用gethostbyname返回NULL

rocklee_0509 2011-10-24 08:51:30
我使用gethostbyname来获得IP地址,但是总是返回NULL,请问怎么回事?
补充,我已经设置了DNS,并且能够成功ping 域名
...全文
576 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2011-10-25
  • 打赏
  • 举报
回复
getaddrinfo去试一下,毕竟你用的是一个已经淘汰的函数了。
rocklee_0509 2011-10-25
  • 打赏
  • 举报
回复
使用hstrerror(h_error)返回的信息是unknown host。但是我能够ping通,我查看了ping命令的源码,里面好像也是用这个函数来做域名向IP转换的
as123456789d 2011-10-25
  • 打赏
  • 举报
回复
用herror();
看一下错误信息,,,

rocklee_0509 2011-10-25
  • 打赏
  • 举报
回复
#include <netdb.h>
#include <sys/socket.h>
#include <stdio.h>

int main(int argc, char **argv)
{
char *ptr, **pptr;
struct hostent *hptr=NULL;
char str[32];
ptr = argv[1];

if((hptr = gethostbyname(ptr))== NULL)
{
printf(" gethostbyname error for host:%s\n", ptr);
perror(NULL);
return 0;
}

printf("official hostname:%s\n",hptr->h_name);
for(pptr = hptr->h_aliases; *pptr != NULL; pptr++)
printf(" alias:%s\n",*pptr);

switch(hptr->h_addrtype)
{
case AF_INET:
case AF_INET6:
pptr=hptr->h_addr_list;
for(; *pptr!=NULL; pptr++)
printf(" address:%s\n",
inet_ntop(hptr->h_addrtype, *pptr, str, sizeof(str)));
printf(" first address: %s\n",
inet_ntop(hptr->h_addrtype, hptr->h_addr, str, sizeof(str)));
break;
default:
printf("unknown address type\n");
break;
}

return 0;
}

代码如上所示,网上搜得一个程序,能够ping通www.baidu.com,但是调用函数确实返回NULL,perror函数则是success
rocklee_0509 2011-10-25
  • 打赏
  • 举报
回复
使用perror返回的信息是success。
louyong0571 2011-10-25
  • 打赏
  • 举报
回复
在调用gethostbyname的时候,如果/etc/resolv.conf没有配置的话会返回NULL,楼主检查下看看
justkk 2011-10-24
  • 打赏
  • 举报
回复
使用perror()看看具体的错误信息是什么..

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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