Unix网络编程相关错误码和信号处理

本文总结了Unix网络编程中常见的错误码,如EAGAIN、ECONNRESET、EALREADY和EINPROGRESS,并解释了它们的原因及解决方法。同时提到了SIGPIPE信号,当管道无接收进程或对端关闭的socket写入时触发,通常可选择忽略此信号。
摘要由CSDN通过智能技术生成

博客搬家,原地址:https://langzi989.github.io/2018/02/04/Unix网络编程相关错误码总结/

特别注意当出现一下错误码时,处理之后一定要将errno复位为0

在网络编程的过程中会出现一些错误码,下面总结:

  • EAGAIN(11) : Resource temporarily unavailable

    • 错误原因:当将套接字设置为异步时,由于函数调用之后是立即返回的,所以会出现两种情况导致这个错误:(1):当调用read函数,此时没有数据可读,此时read函数会立即返回错误码EAGAIN表示此时无数据可读(2):当调用write函数,此时缓冲区满,write函数将会立即返回错误码EAGAIN。
    • 解决方法:EAGAIN错误表示此时无数据可读或者缓冲区已满,所以此时只需要重试即可。
  • ECONNRESET(104):Connection reset by peer

    • 错误原因:当对端socket已关闭,此时调用read或write函数将返回ECONNRESET错误,在之后如果继续调用read或write,就会得到该错误。常见的原因是发送端接收端实现约定好的数据长度不一致,若接收
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值