网络编程中的超时检测详细过程说明[1]

互联网技术 责任编辑:aa3296602 2011-01-10

摘要:我们在网络编程中常见的一种做法是:创建好套接字后以阻塞的方式读写,如果没有数据可读的话,程序会一直等待。事实上,网络状况一直不断变化,很有可能在通讯过程中出现网络连接断开。我们在程序中有必要对这种情况进行检测,从而及时做出响应。下面介绍几种常用的超时检测方法(假设我们要求通过套接字等待数据的最大时间为8秒):

  我们在网络编程中常见的一种做法是:创建好套接字后以阻塞的方式读写,如果没有数据可读的话,程序会一直等待。事实上,网络状况一直不断变化,很有可能在通讯过程中出现网络连接断开。我们在程序中有必要对这种情况进行检测,从而及时做出响应。下面介绍几种常用的超时检测方法(假设我们要求通过套接字等待数据的最大时间为8秒):

  一、 设置套接字接收超时

  setsockopt可以设置套接字的属性,其中包括接收超时时间。参考代码如下

  struct timeval tv; // 描述时间的结构体变量

  ……

  tv.tv_sec = 8;

  tv.tv_usec = 0;

  setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv));

  ……

  二、 多路IO复用SELECT

  SELECT 函数通常被用来实现多路IO复用,同样可以利用它来实现超时处理。参考代码如下:

  struct timeval tv; // 描述时间的结构体变量

  fdset rdfds; // 定义读描述符集合

  ……

  tv.tv_sec = 8;

  tv.tv_usec = 0;

  FD_ZERO(&rdfds);

  FD_SET(sockfd, &rdfds);

[1]  [2]  

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

通信工程师备考资料免费领取

去领取

距离2025 通信工程师考试

还有
  • 0
  • 3
  • 7
专注在线职业教育24年

信息系统项目管理师

信息系统项目管理师

!
咨询在线老师!