当前位置:  技术问答>linux和unix

如何使gethostbyname()超时返回,不要永远阻塞

    来源: 互联网  发布时间:2015-12-08

    本文导语:  我的程序是不能阻塞的,否则后果很严重。但是又要在循环中用到gethostbyname(),这个函数是阻塞的,所以当dns服务器访问不到或者出故障的时候就阻塞住了,造成很严重的后果,请教两个问题: (1)它是永远阻塞的吗...

我的程序是不能阻塞的,否则后果很严重。但是又要在循环中用到gethostbyname(),这个函数是阻塞的,所以当dns服务器访问不到或者出故障的时候就阻塞住了,造成很严重的后果,请教两个问题:
(1)它是永远阻塞的吗?缺省回返回吗?
(2)有没有办法弄个超时时间,一段时间解析不能成功时就返回个超时错误。

|

1)不会永远阻塞
2)可以自己设定时器,思路如下:
void alarm_handle(int);//定时器的处理函数

int main()
{
    
    alarm(1);//设置定时器
    signal(SIGALRM, alarm_handle);//设置信号SIGALRM的处理处理函数
    gethostbyname();
    清除alarm信号;
    ...
}

void alarm_handle(int)
{
   longjump();//跳转到gethostbyname()之后
}

注:跨函数的跳转请见一书

|
可以通过网卡名来获得ip地址。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 关于gethostbyname弱爆了,救命啊
  • 急,gethostbyname_r,gcc编译时要指定特别的库吗?
  • 程序中使用gethostbyname出现段错误
  • #请问nslookup和程序中使用gethostbyname为什么结果不同?
  • gethostbyname
  • 关于/etc/resolv.conf和gethostbyname
  • 关于中断gethostbyname的问题
  • 域名解析gethostbyname,错误:Host name lookup failure
  • linux网络编程中gethostbyname、gethostbyaddr函数的用法
  • 初学者求救:gethostbyname的应用,看看看错在哪里?谢谢。。。
  • 关于linux socket下的gethostbyname()这个函数的IP问题
  • gethostbyname所得ip不能使用
  • 不显示删除回复显示所有回复显示星级回复显示得分回复 ubuntu10.04 安装 mysql4.0 源码出错,提示gethostbyname_r的参数数量不对
  • linux获取主机名后用gethostbyname() 不能获取主机ip
  • 一个gethostbyname的疑问
  • [进者有分]c 中gethostbyname()的源代码是什么?
  • 关于gethostbyname的一个疑问
  • gethostbyname_r内部出错到问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3