网络超时检测.pdf

网络超时检测.pdf

ID:48009770

大小:478.70 KB

页数:14页

时间:2020-01-13

网络超时检测.pdf_第1页
网络超时检测.pdf_第2页
网络超时检测.pdf_第3页
网络超时检测.pdf_第4页
网络超时检测.pdf_第5页
资源描述:

《网络超时检测.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一、网络超时检测在网络通信过程中,经常会出现不可预知的各种情况。例如网络线路突发故障、通信一方异常结束等。一旦出现上述情况,很可能长时间都不会收到数据,而且无法判断是没有数据还是数据无法到达。如果使用的是TCP协议,可以检测出来;但如果使用UDP协议的话,需要在程序中进行相关检测。所以,为避免进程在没有数据时无限制的阻塞,使用网络超时检测很有必要。1、套接字接收超时检测这里先介绍设置套接字选项的函数setsockopt()函数:#include所需头文件#include

2、socket.h>intsetsockopt(intsockfd,intlevel,intoptname,函数原型constvoid*optval,socklen_toptlen);sockfd:套接字描述符level:选项所属协议层函数参数optval:保存选项值的缓冲区optlen:选项值的长度成功:0函数返回值出错:-1,并设置errno下面是套接字常用选项及其说明:LEVEL:SOL_SOCKET选项名称说明数据类型SO_BROADCAST允许发送广播数据intSO_DEBUG允许调试intSO_

3、DONTRUOTE不查找路由intSO_ERROR获得套接字错误intSO_KEEPALIVE保持连接intSO_LINGER延迟关闭连接structlingerSO_OOBINLINE带外数据放入正常数据流intSO_RCVBUF接收缓冲区大小intSO_SNDBUF发送缓冲区大小intSO_RCVTIMEO接收超时structtimevalSO_SNDTIMEO发送超时structtimevalSO_REUSERADDR允许重用本地地址和端口intSO_TYPE获得套接字类型int下面利用SO_RCV

4、TIMEO的选项实现套接字的接收超时检测:[cpp]viewplaincopy1.#include2.#include3.#include4.#include5.#include6.#include7.#include8.#include9.#defineN6410.#definePORT888811.12.intmain

5、()13.{14.intsockfd;15.charbuf[N];16.structsockaddr_inseraddr;17.structtimevalt={6,0};18.19.if((sockfd=socket(AF_INET,SOCK_DGRAM,0))==-1)20.{21.perror("socketerror");22.exit(-1);23.}24.else25.{26.printf("socketsuccessfully!");27.printf("sockfd:%d",sock

6、fd);28.}29.30.memset(&seraddr,0,sizeof(seraddr));31.seraddr.sin_family=AF_INET;32.seraddr.sin_port=htons(PORT);33.seraddr.sin_addr.s_addr=htonl(INADDR_ANY);34.35.if(bind(sockfd,(structsockaddr*)&seraddr,sizeof(seraddr))==-1)36.{37.perror("binderror");38.e

7、xit(-1);39.}40.else41.{42.printf("bindsuccessfully!");43.printf("PORT:%d",PORT);44.}45.46.if(setsockopt(sockfd,SOL_SOCKET,SO_RCVTIMEO,&t,sizeof(t))<0)47.{48.perror("setsockopterror");49.exit(-1);50.}51.52.if(recvfrom(sockfd,buf,N,0,NULL,NULL)<0)53.{54

8、.perror("failtorecvfrom");55.exit(-1);56.}57.else58.{59.printf("recvdata:%s",buf);60.}61.62.return0;63.}执行结果如下:[cpp]viewplaincopy1.fs@ubuntu:~/qiang/socket/time$./setsockopt2.socketsuccessfully!3.sockfd:34.bindsuc

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。