网络编程实战:检查数据的有效

对端的异常状况

可以通过read调用,对EOF的判断,随时防范对方程序崩溃

但是  不是每种情况都可以通过读操作来感知异常 比如服务器完全崩溃,或者网络中断的情况下,此时如果阻塞套接字,那么会一直阻塞在read等调用上,没有办法感知套接字异常

其实有几种办法来解决这个问题

第一个办法是给套接字的read操作设置超时,如果超过了一段时间就认为链接已经不存在,

struct timeval tv;

tv.tv_sec=5;

tv.tv_usec=0;

setsockopt(connfd,SQL_SOCKERT,SO_RECVTIMEO,(const char *) &tv,sizeof(tv));

设置了套接字的读操作超时,超时事件在5秒

 

第二个方法

添加对链接是否正常的检测。如果链接不正常,需要从当前read阻塞中返回并处理

还有一个办法  通过多路复用自带的超时能力,完成对套接字I/O检查

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值