errno错误值

本文详细解析了errno中的EINTR、ECONNABORTED、EPROTO错误值在非阻塞网络编程中的应用,特别是与accept和connect相关的情况。介绍了这些错误在不同场景下出现的原因,以及如何处理和忽略相关信号。
摘要由CSDN通过智能技术生成

EINTR : 被信号中断的慢速系统调用,当捕捉到信号且相应信号处理函数返回时

ECONNABORTED:由于客户端在服务accept前发送了RST复位信号,客户端可由SO_LINGER控制(UNPV16.21图),实际在较忙的web服务器会出现  unpv 5.11节

EPROTO: 流子系统发生某些致命的协议相关事件,会返回此错误 unpv 5.11节

 

以下在设置 非阻塞accept 时需忽略以下信号

EWOULDBLOCK:

1、使用setsockopt设置SO_RCVTIMEO为recvfrom设置超时

2、非阻塞套接字如read、recv、recvfrom、recvmsg、write、send、以及accept,如果输入、输出操作不能得到满足,会返回此错误

3、EWOULDBLOCK(源自Berkeley)客户中止连接、ECONNABORTED (源自POSIX,客户中止连接)、

EPROTO:(SVR4实现,客户中止连接) 和 EINTR(如果由信号被捕获)

设置非阻塞connect 忽略以下信号

EINPROGRESS : 对于非阻塞connect,并且连接不能立即建立,会返回此错误,但连接的建立会依然进行

远端拒绝(程序未启动或未监听该套接字)

ECONNREFUSED: 当客户去连接一个未启动的服务程序,或者该服务程序未监听,客户connect会立即返回该错误,硬错误

非阻塞或 设置SO_RCVTIMEO套接字超时会返回EAGAIN

EAGAIN:   1、当应用程序进行一些非阻塞(non-blocking)操作(对文件或socket)的时候。例如&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值