RECV的超时总结

本文详细解析了recv函数在阻塞和非阻塞模式下的行为特点,包括返回值的意义、错误码的判断以及如何正确处理网络异常情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明:针对recv返回值,阻塞情况下,当网络异常时,recv是返回个-1,还是阻塞不动,还是根据情况而定呢

一、 不论是阻塞还是非阻塞都是
<0:出错;
=0:连接关闭;
>0接收到数据大小
二、 Recv<0情况
1、特别:返回值 <0时并且(errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)的情况下认为连接是正常的,继续接收。
2、只是阻塞模式下recv会阻塞着接收数据(非阻塞模式下如果没有数据会返回,不会阻塞着读,因此需要循环读取)。
阻塞情况下,阻塞接收,不会返回负数吗?
3、很多人说阻塞模式下read会阻塞着读,是否这样?我和同事试了不会阻塞,而是会返回一个负数。
4、阻塞模式下read返回值 < 0 && errno != EINTR && errno != EWOULDBLOCK && errno != EAGAIN时,连接异常需要关闭,read返回值 < 0 && (errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)时表示没有数据,需要继续接收,如果返回值大于0表示接送到数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值