gethostbyname出错 获取错误描述 Host name lookup failure

        最近在做嵌入式项目的时候,突然发现gethostbyname失败了,会阻塞比较长的时间。起初一直不知道怎么查错误,查了很多资料,连怎么获取错误描述都不知道。查找了不少资料,也浪费了很多时间,发现网上都没有给出解决方法。今天终于解决了这个问题,在此简单记录,希望对大家有所帮助。

 

        gethostbyname这个函数如果失败了,会返回一个NULL指针,并设置h_error。

        一般我们会使用perror来输出错误信息,但是当在这个函数之后立即调用perror的时候,会发现,输出结果是success。其实,对于gethostbyname,要获取错误信息应该使用herror这个函数

 

我获取到的错误是:Host name lookup failure。

遇到这个错误,首先要尝试ping一下自己的网关。如果可以ping通,那至少网络部分是没有问题的。

然后尝试ping某一个网站,比如ping www.csdn.net,如果还是显示Host name lookup failure,那就有可能是DNS配置有问题。

可以vi /etc/resolv.conf,打开这个文件,一般可以看到如:

nameserver 192.168.1.1

这样的配置。也可能没有任何配置,那就直接自己写一些进去。

因为公司的网段是192.168.0的网段,所以在这里把配置修改成:

nameserver 192.168.0.1

保存关闭,然后再尝试ping,结果发现可以成功ping通了。

 

然后再运行程序,发现gethostbyname成功了。

至此,问题解决。如果需要修改网段,可以在程序中修改resolv.conf文件中的内容。

 

你可能感兴趣的:(ARM-Linux,C/C++基础)