社区
Linux/Unix社区
帖子详情
使用gethostbyname返回NULL
rocklee_0509
2011-10-24 08:51:30
我使用gethostbyname来获得IP地址,但是总是返回NULL,请问怎么回事?
补充,我已经设置了DNS,并且能够成功ping 域名
...全文
634
7
打赏
收藏
使用gethostbyname返回NULL
我使用gethostbyname来获得IP地址,但是总是返回NULL,请问怎么回事? 补充,我已经设置了DNS,并且能够成功ping 域名
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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()看看具体的错误信息是什么..
get
host
byname
返回
NULL
的问题分析
本文介绍了一种因网络断开导致程序崩溃的问题分析过程。通过加入日志定位到crash点,最终发现是由于开源代码中对网络状态判断不当导致。文中提供了调试思路及解决方案。
linux get
host
byname
返回
null
程序部署到客户端机器上不能运行,debug发现是get
host
byname
返回
null
,导致获取不到本机IP。经查是因为修改机器名称后没有
get
host
byname
接受IP字符串为参数
本文详细介绍了get
host
byname
函数的工作原理及其对IP字符串和未知主机名的处理方式。当遇到无法识别的主机名时,该函数
返回
NULL
;而对于格式正确的IP字符串,则
返回
一个包含特定信息的
host
ent结构体。
Linux 下 get
host
byname
解析域名失败,错误码为 “11, Resource temporarily unavailable“
本文探讨了在MVR设备启动过程中遇到的DNS解析问题,当get
host
byname
函数
返回
NULL
时,原因是无法解析域名。解决方案是在调用get
host
byname
前先调用res_init函数,该函数会读取配置文件以获取域名、搜索顺序和服务器地址。如果未提供服务器,将尝试本地主机,若无域名则
使用
本地主机的关联域。环境变量LOCALDOMAIN可以覆盖默认设置。
get
host
name()函数出错,但
返回
success的问题解决
本文探讨了在网络编程中
使用
get
host
byname
函数时遇到的问题及解决方法。该函数失败时会
返回
NULL
指针并设置 h_error,但直接
使用
perror 无法正确显示错误信息,需要
使用
herror 函数来获取详细的错误描述。
Linux/Unix社区
23,223
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章